JPA嵌入式复合主键和自动生成ID

时间:2014-10-24 13:27:29

标签: jpa primary-key auto-increment composite-primary-key

我有许多具有这种总体布局的表格(注意这里的SQL不完整 - 这是解释问题的最小值): -

table1
------
int ID auto_increment,
table2_ID int, -- Foreign key
table3_ID int, -- Foreign key
prop1 varchar,
prop2 int;

table1table2具有多对一的识别关系,table2table3具有多对一的识别关系等。

NetBeans为所有表创建与此类似的实体类内容: -

table1.java
-----------
@EmbeddedId
table1PK key;
@Column(name = "prop1")
String prop1;
@Column(name = "prop2")
int prop2;

table1PK.java
-------------
@Column(name = "ID")
int ID;
@Column(name = "table2_ID")
int table2ID;
@Column(name = "table3_ID")
int table3ID;

如表定义所示,我希望自动生成每个表的唯一ID,并且我想使用@TableGenerator来执行此操作。

如果我在PK课程中执行以下操作,a)是否可以工作,b)是否安全?

table1PK.java
-------------
@TableGenerator(name="table1ID", table="id_generator", pkColumnName="gen_name", valueColumnName="gen_value", initialValue = 1, allocationSize = 1 )
@GeneratedValue(strategy=GenerationType.TABLE, generator = "table1ID" )
@Column(name = "ID")
int ID;
@Column(name = "table2_ID")
int table2ID;
@Column(name = "table3_ID")
int table3ID;

我已将表生成器代码添加到其中一个PK类中,并且项目构建和部署没有错误,但NetBeans在PK表中给出了ID警告: -

GeneratedValue annotation should only be used for Id field

虽然是复合主键的一部分,但该字段是基础表上的ID字段。

0 个答案:

没有答案
相关问题