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

Java JPA SequenceGenerator:单个表中的所有生成器,java,jpa,sequence-generators,Java,Jpa,Sequence Generators,我正在使用3个不同的JPA序列生成器。每个人都在数据源中使用给定名称创建自己的表: @SequenceGenerator(name = "a_seq", sequenceName = "A_SEQ") @SequenceGenerator(name = "b_seq", sequenceName = "B_SEQ") @SequenceGenerator(name = "c_seq", sequenceName = "C_SEQ") 有没有一种方法可以将它们合并到一个表中,比如序列表,并且每个

我正在使用3个不同的JPA序列生成器。每个人都在数据源中使用给定名称创建自己的表:

@SequenceGenerator(name = "a_seq", sequenceName = "A_SEQ")
@SequenceGenerator(name = "b_seq", sequenceName = "B_SEQ")
@SequenceGenerator(name = "c_seq", sequenceName = "C_SEQ")

有没有一种方法可以将它们合并到一个表中,比如序列表,并且每个生成器都是这个表中的一行?

像这样。示例代码

@Entity(name = "project_document")
public class Document {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int idx;

    // ... setter, getter
}


像这样。示例代码

@Entity(name = "project_document")
public class Document {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int idx;

    // ... setter, getter
}


您需要使用
生成器(将id值存储在指定的表中),而不是
序列
生成器(使用本机SQL序列)。下面这个简化的示例应该会告诉您这个想法,但是您可以通过在
@TableGenerator
注释上指定更多属性来控制表的模式

@TableGenerator(name="MyTableGen", table="SEQUENCES", pkColumnValue="MyClass")
@Entity
public class MyEntity
{
    @Id
    @GeneratedValue(strategy=GenerationType.TABLE, generator="MyTableGen")
    private long myId;

    ...
}

您需要使用
生成器(将id值存储在指定的表中),而不是
序列
生成器(使用本机SQL序列)。下面这个简化的示例应该会告诉您这个想法,但是您可以通过在
@TableGenerator
注释上指定更多属性来控制表的模式

@TableGenerator(name="MyTableGen", table="SEQUENCES", pkColumnValue="MyClass")
@Entity
public class MyEntity
{
    @Id
    @GeneratedValue(strategy=GenerationType.TABLE, generator="MyTableGen")
    private long myId;

    ...
}

自动意味着JPA提供商将自行决定使用哪种价值生成策略。所以你可以得到自动增量,或序列或其他东西。因此这并不能回答这个问题。尼尔。。再见。好吧,我同意。我的示例代码不是很好的答案。但最后一个链接good answer.AUTO意味着JPA提供商将自行决定使用哪种价值生成策略。所以你可以得到自动增量,或序列或其他东西。因此这并不能回答这个问题。尼尔。。再见。好吧,我同意。我的示例代码不是很好的答案。但最后一个链接是一个很好的答案。看看策略“表”,它将事物存储在一个表中。SEQUENCE用于本机RDBMS SequenceThank,现在我使用表。这正是我想要的。当你创建一个答案时,我会接受它作为正确的答案。添加了一个答案,谢谢。看看策略“表”,它将东西存储在一个表中。SEQUENCE用于本机RDBMS SequenceThank,现在我使用表。这正是我想要的。当你创建一个答案时,我会接受它作为正确的答案。添加了一个答案,谢谢。