首页 > 解决方案 > 盒装与原始类型作为实体 id

问题描述

在 JPA(Hibernate 实现)中,哪种类型更适合用于实体的 id: 盒装类型(例如Integer)还是未盒装类型(例如int)?

有朋友说应该使用 Boxed 类型,因为当你在程序中创建一个新实体时,Hibernate 看到 id 是null并理解它应该在数据库中创建一个新行(相反,如果 id 不是,nullHibernate 可能会更新现有行在数据库中)。

但是我的实体的 id 是int,它运行良好,没有任何错误,我们知道原始实例变量的默认值是0. 所以他说也许hibernate把0它当作特殊的,并假设对象是一个新的。

标签: javadatabasehibernatejpaorm

解决方案


似乎当前文档 建议使用盒装类型。

我们建议您在持久类上声明一致命名的标识符属性,并使用可为空(即非原始)类型。


推荐阅读