我将 Java 和 JPA 用于 ORM。
最初我是这样定义实体键的:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
但这导致 id 增长得非常快且以不可预测的方式(...19,20,22,1003...1007,1014,1015,2004...)
这似乎与文档相矛盾,该文档指出“最简单的键字段是一个长整数值,当对象第一次保存到数据存储区时,该值由 JPA 自动填充,该值在该类的所有其他实例中都是唯一的。长整数键使用 @Id 注释和 @GeneratedValue(strategy = GenerationType.IDENTITY) 注释”
所以我找到了这个单元测试,然后我切换到了它在那里完成的方式:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
在更新一些 GQL 语句后迁移得很好,但我仍然看到键每次增加 1000。
我应该使用 GenerationType.TABLE 吗?或者我应该在 Long 而不是 Key 字段上使用 IDENTITY?
我希望在我的实时(测试版)应用程序中不断改变它之前得到一些明确的答案。不幸的是,到目前为止我在开发环境中使用的所有方案都会产生连续的键,所以除了部署之外,真的没有办法测试新方法。
提前致谢。