gpt4 book ai didi

java - JPA/Hibernate - x 实例的标识符被更改异常

转载 作者:行者123 更新时间:2023-11-29 05:58:13 25 4
gpt4 key购买 nike

我有一个 JPA/Hibernate 对象,它使用复合键作为主键。我正在尝试从数据库中读取对象并进行更新。

假设主键是 (id 和 name) 并且数据库中存在以下行。

1   john   London
2 bob Birmingham
3 Dave Kent

如果我使用键 (1,john) 加载对象,那么一切正常。如果我使用相同的主要但使用 (1, John) 的不同情况加载它,那么我会得到以下异常:

org.hibernate.HibernateException: identifier of an instance of Document was altered from com.myPck.test1.documentsPK[ Id=1, msgOwner=john ] to com.myPck.test1.documentsPK[ Id=1, msgOwner=John ]; 

加载行后,我使用 JPQL 更新它,但我不更新任何主键列。有趣的是,如果我搜索不存在的行,我不会得到该异常。仅当我搜索确实存在的行但键上使用的大小写与数据库中的实际不同时才会发生。

可能是什么原因造成的,我该如何解决?

谢谢

最佳答案

你能发布你正在使用的复合键类的代码吗?我的猜测是复合主键类上的 equals 和 hashCode 方法实现不当。

关于java - JPA/Hibernate - x 实例的标识符被更改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11195892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com