如何使用JPA创建PostgreSql序列?

如何使用JPA创建PostgreSql序列?,postgresql,jpa,ejb-3.0,sequence,ejb-3.1,Postgresql,Jpa,Ejb 3.0,Sequence,Ejb 3.1,我的目标是EJB在从实体生成表时应该生成一个序列。我该怎么做 我考虑过这一点,但在这种情况下,我只使用现有的序列。我想由JPA生成一个序列。我认为这是不可能的,或者是吗 @Entity @Table(name = "CUSTOMER") @SequenceGenerator(name = "sb_sequence",sequenceName = "sb_sequence", initialValue=5420) public class Customer extends EntityBase {

我的目标是EJB在从实体生成表时应该生成一个序列。我该怎么做

我考虑过这一点,但在这种情况下,我只使用现有的序列。我想由JPA生成一个序列。我认为这是不可能的,或者是吗

@Entity
@Table(name = "CUSTOMER")
@SequenceGenerator(name = "sb_sequence",sequenceName = "sb_sequence", initialValue=5420)
public class Customer extends EntityBase
{
    private static final long serialVersionUID = 3456353535358L;

    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sb_sequence")
    @Column(name = "CUS_SEQUENCE")
    private long cusSequence;
.
.
.
}

背景:在将第一个值插入数据库之前,我需要检索第一个序列号(可能使用select nextval('sequence');)

大多数JPA提供程序都允许生成DDL,但这不是JPA规范的一部分

日食见


这似乎并不取决于JPA,而是取决于您的JPA实现来生成DDL。也就是说,如果您想在对象被持久化到存储之前知道对象的ID是什么,那么您可能需要自己处理调用序列。运行
选择nextval('sequence')GenerationType.SEQUENCE
保存对象之前,code>将实际生成两个序列号。另见。