我正在使用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;

    ...
}

07-27 13:34