JPA SequenceGenerator:单表中的所有生成器

时间:2016-12-16 03:32:22

标签: java jpa sequence-generators

我正在使用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表,每个生成器在这个表中是一行?

2 个答案:

答案 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;

enter link description here