【问题标题】:How to create PostgreSql sequence with JPA?如何使用 JPA 创建 PostgreSql 序列?
【发布时间】:2012-03-20 22:29:05
【问题描述】:

我的目标是 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,而是依赖于你的 JPA 实现来生成 DDL。也就是说,如果您想在对象被持久化到存储之前知道对象的 ID 是什么,您可能需要自己处理调用序列。在使用GenerationType.SEQUENCE 保存对象之前运行select nextval('sequence'); 实际上会导致生成两个序列号。另请参阅this related question

标签: postgresql jpa ejb-3.0 sequence ejb-3.1


【解决方案1】:

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

对于 EclipseLink,请参阅,

http://wiki.eclipse.org/EclipseLink/Examples/JPA/DDL

【讨论】:

    猜你喜欢
    • 2019-02-26
    • 2016-10-27
    • 1970-01-01
    • 2014-06-29
    • 2021-12-13
    • 2019-04-02
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多