java - 盒装与原始类型作为实体 id
问题描述
在 JPA(Hibernate 实现)中,哪种类型更适合用于实体的 id:
盒装类型(例如Integer
)还是未盒装类型(例如int
)?
有朋友说应该使用 Boxed 类型,因为当你在程序中创建一个新实体时,Hibernate 看到 id 是null
并理解它应该在数据库中创建一个新行(相反,如果 id 不是,null
Hibernate 可能会更新现有行在数据库中)。
但是我的实体的 id 是int
,它运行良好,没有任何错误,我们知道原始实例变量的默认值是0
. 所以他说也许hibernate把0
它当作特殊的,并假设对象是一个新的。
解决方案
似乎当前文档 建议使用盒装类型。
我们建议您在持久类上声明一致命名的标识符属性,并使用可为空(即非原始)类型。
推荐阅读
- sql-server-2016 - 在 SQL Server 2016 WITH 和 OPENJSON 中使用条件来更改更新值
- react-native - React Native领域获取对象返回没有值的数组
- jdbc - 独立模式下的 SQL Server Kafka 连接器未在 kafka 中加载数据
- flutter - Flutter Firebase Messaging 仅适用于 iOS 模拟器
- python - Plotly:如何为 Scattergeo 设置手动边界框?
- android - 重新创建的活动在后按时返回首页,启动 API 28
- javascript - 如何防止元素重新渲染
- javascript - 在 jQuery 事件中使用 YouTube iFrame API
- android - 从我的应用程序将 xlsx 文件转换为 pdf 的请求发送到 Microsoft Office 或 Google 表格
- reactjs - 如何让 webview 等待令牌?