具有外键的实体引用幻像表&实体

时间:2011-08-02 11:52:02

标签: sql jpa

我有一个现有的传统DDL,我要映射到JPA。

我已经将USERS SQL表映射到USERS JPA @Entity。

create table USERS (
  -- a bunch of fields
  primary key (id),
  foreign key FK_USERS_CONTACT (CONTACT_ID) references CONTACTS(ID),
  foreign key USER_SPEAKS_NATIVE_LANGUAGE (NATIVE_LANGUAGE) references LANGUAGES(ID),
  foreign key USER_HAS_PREFERRED_TIMEZONE (PREF_TIMEZONE_ID) references TIME_ZONES(ID),
  foreign key USER_OWNS_USAGE (USAGE_OWNER_ID) references USAGE_OWNERS(ID)
);

但是现有的SQL表中存在那些我不想在任何JPA类中描述的FK。最好的解决方案是执行以下操作:

@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
@JoinColumn(nullable = false, name = "USAGE_OWNER_ID")
private Object usageOwners;

...基本上使用可以反映任何表引用的虚拟/幻像对象。但JPA中不允许使用原始对象类型。

那么我如何描绘&实现USERS表的外键约束而不描述JPA中的任何SQL表。我只想描述对这些表的FK引用,而不是实际的SQL表

1 个答案:

答案 0 :(得分:1)

您最好使用Contact,Language,TimeZone,UsageOwner类。如果你想要有类,那么你可以只为外键设置@Basic映射,并将其映射为基本类型,如Integer。

相关问题