JPA:如何使字段自动递增

Tha*_*ham 5 mysql jpa auto-increment eclipselink

我使用 Eclipselink 作为我的 JPA 提供程序,如何使字段自动递增?

Pas*_*ent 2

我只想要 1 个实体的自动增量字段。

是的,我明白了,这就是你在问题中写的。但它可以有多种解释,重复同样的事情而不澄清并没有多大帮助:)

那么帕斯卡的方式是否有效,或者我必须按照字节码的建议进行操作,从 MyEntity 查询 select (max) counter + 1 ,以获取下一个值,然后将其设置为设计字段,即持久性?

如果您想为每个实体记录增加一个字段(例如,id=1 的“计数器” Order,id=2 的另一个“计数器Order”),我的建议将起作用。

如果您想要类似于主键的行为(即自动增量),它不会。在这种情况下,标准 JPA 不提供任何特定的功能(标准 JPA 仅允许GenereatedValueId带注释的字段上)。我能想到的唯一方法是插入另一个专用实体只是为了从中获取主键。


您的确切要求尚不清楚,但我假设您正在谈论随机字段,而不是主键。在这种情况下,您可以使用生命周期回调方法:

@Entity
public class MyEntity {
    ...
    private int counter;
    ...

    @PrePersist
    @PreUpdate
    protected void increment() {
         counter = counter + 1;
    }
}
Run Code Online (Sandbox Code Playgroud)