JPA FK在PK表的子集上消除了复合键的需要

时间:2015-01-07 16:58:47

标签: java jpa

我有以下表格:

EMPLOYEE
---------
EMPL_ID (PK)
FRST_NAME
LAST_NAME
EMP_TYP_CODE
(etc.)

CODE
---------
DOMAIN (PK part)
CODE (PK part)
DESCRPTN

因为我希望有一个代码查找表,其中代码按域分区,而不是每个代码都有一个单独的查找表,这会在我的架构中引入许多表,我不喜欢这样。所以CODE中的PK是复合的(DOMAIN,CODE)。想象一下,CODES中的数据类似于

CODE_DOMAIN  CODE   DESCRPTN
--------------------------------
EMP_TYP      F      full time
EMP_TYP      P      part time
EMP_TYP      T      temp
COMP_LEVEL   A      entry
COMP_LEVEL   B      mid
(etc.)

将我的Employee Entity类链接到Code实体类时,如何指定我对CODE表感兴趣的只是其子集中具有EMP_TYP的DOMAIN而没有冗余的DOMAIN列/字段在Employee表/类中?

我试过

@ManyToOne
@JoinColumn(name = "EMP_TYP_CODE") 
private Code empType;

但得到了

org.hibernate.AnnotationException: A Foreign key refering com.myapp.Code from com.myapp.Employee has the wrong number of column. should be 2.

另请参阅the sequel此问题。

0 个答案:

没有答案