我有许多具有这种总体布局的表格(注意这里的SQL不完整 - 这是解释问题的最小值): -
table1
------
int ID auto_increment,
table2_ID int, -- Foreign key
table3_ID int, -- Foreign key
prop1 varchar,
prop2 int;
table1
与table2
具有多对一的识别关系,table2
与table3
具有多对一的识别关系等。
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字段。