【问题标题】:Are JPA Ids sequentialJPA ID 是连续的吗
【发布时间】:2012-04-04 00:27:01
【问题描述】:

Play 框架为实体创建一个 Id,它像这样扩展模型类:

@MappedSuperclass
public class Model extends GenericModel {

    @Id
    @GeneratedValue
    public Long id;

    public Long getId() {
        return id;
    }

    @Override
    public Object _key() {
        return getId();
    }

}

是否可以使用这个id(最大id)来确定最近创建的记录?

我想让一些作业在发生故障时从某个点重新运行,这将是迄今为止添加此功能的最简单方法。

我不想添加创建时间列,因为表已经很大了。

【问题讨论】:

标签: hibernate jpa playframework uniqueidentifier


【解决方案1】:

@GeneratedValue 的默认 strategy()GenerationType.AUTO。定义是

表示持久性提供程序应该为特定数据库选择适当的策略。 AUTO 生成策略可能期望数据库资源存在,或者它可能会尝试创建一个。如果供应商不支持架构生成或无法在运行时创建架构资源,供应商可能会提供有关如何创建此类资源的文档。

所以这取决于您使用的数据库。如果您使用GenerationType.IDENTITY,一些数据库供应商会使用某种“auto_increment”值。至少,这对 MySQL 来说是正确的。如果您使用带有GenerationType.IDENTITY 的MySQL,您可以使用max(id) 来确定最新创建的记录。有关更多信息,我会检查您的数据库规范。

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2011-07-02
    • 2019-04-09
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2011-11-28
    相关资源
    最近更新 更多