我正在使用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表,每个生成器在这个表中是一行?
答案 0 :(得分:2)
您需要使用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;
...
}
答案 1 :(得分:0)
@Entity(name = "project_document")
public class Document {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int idx;
// ... setter, getter
}
...
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
private long id;