Java 分离实例上的hibernate更新与JPA合并

Java 分离实例上的hibernate更新与JPA合并,java,hibernate,jpa,orm,jpa-2.0,Java,Hibernate,Jpa,Orm,Jpa 2.0,两者都将更新持久状态,但 合并将返回附加实例,使给定实例保持不变。 更新将附加给定实例 我的问题是:JPA merge是否也会触发一个select(我想它会)来获取附加的实例,而hibernate更新不会 请不要试图向我解释已经在这里找到的东西我想你不能一般地说JPA合并会触发select:这取决于实体的外观,例如,它是否有@Version字段,或者ID是否由您的代码生成。规范似乎确实指出:实体使用的任何版本列都必须在合并操作期间和/或刷新或提交时由持久性运行时实现进行检查。在没有版本列的情况下

两者都将更新持久状态,但

合并将返回附加实例,使给定实例保持不变。 更新将附加给定实例 我的问题是:JPA merge是否也会触发一个select(我想它会)来获取附加的实例,而hibernate更新不会


请不要试图向我解释已经在这里找到的东西

我想你不能一般地说JPA合并会触发select:这取决于实体的外观,例如,它是否有@Version字段,或者ID是否由您的代码生成。规范似乎确实指出:实体使用的任何版本列都必须在合并操作期间和/或刷新或提交时由持久性运行时实现进行检查。在没有版本列的情况下,持久性提供程序运行时在合并操作期间不会执行额外的版本检查。因此,返回的附加实例只是给定实例的附加克隆,并且永远不会从数据库中检索到?正如我对规范的理解,JPA不会强制任何实现获取更新的行。关于hibernate:我不是hibernate团队的成员,无法回答这个问题,但是您可以浏览代码以获得更多版本来检查这一点。此外,我检查了一个简单的合并,它似乎确实没有做一个额外的选择,当您考虑性能时,它会有意义。