我正在使用3个不同的JPA SequenceGenerators。每个人都在给定名称的数据源中创建自己的表:
@SequenceGenerator(name = "a_seq", sequenceName = "A_SEQ")
@SequenceGenerator(name = "b_seq", sequenceName = "B_SEQ")
@SequenceGenerator(name = "c_seq", sequenceName = "C_SEQ")
有没有一种方法可以将它们全部合并到一个表(例如SEQUENCE表)中,并且每个生成器在此表中都是一行?
最佳答案
您需要使用Table
生成器(将id值存储在指定表中),而不是Sequence
生成器(使用本机SQL序列)。下面的简化示例应该可以为您提供想法,但是您可以通过在@TableGenerator
注释上指定更多属性来控制表的架构。
@TableGenerator(name="MyTableGen", table="SEQUENCES", pkColumnValue="MyClass")
@Entity
public class MyEntity
{
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="MyTableGen")
private long myId;
...
}