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)来确定最新创建的记录?
我希望在发生故障时从某个点重新运行一些作业,这是迄今为止添加此功能的最简单方法。
我不想添加创建时间列,因为该表已经很大了。
答案 0 :(得分:4)
strategy()
的默认@GeneratedValue
为GenerationType.AUTO
。定义是
表示持久性提供程序应为特定数据库选择适当的策略。
AUTO
生成策略可能期望存在数据库资源,或者可能尝试创建数据库资源。供应商可以提供有关如何在不支持模式生成或无法在运行时创建模式资源的情况下创建此类资源的文档。
所以这取决于您使用的数据库。如果使用GenerationType.IDENTITY
,某些数据库供应商会使用某种“auto_increment”值。至少,MySQL也是如此。如果将MySQL与GenerationType.IDENTITY
一起使用,则可以使用max(id)
来确定最新创建的记录。有关详细信息,请查看您的数据库规范。