当前位置: 首页 > 面试题库 >

休眠:如何解决“实例标识符从X更改为Y”的问题?

谷梁嘉悦
2023-03-14
问题内容
org.hibernate.HibernateException: identifier of an instance 
of org.cometd.hibernate.User altered from 12 to 3

实际上,我的user表确实必须动态更改其值,我的Java应用程序是多线程的。任何想法如何解决?


问题答案:

您是否要在某个地方更改User对象的主键值?你不应该那样做。检查主键映射是否正确。

您的映射XML文件或映射注释是什么样的?



 类似资料:
  • 问题内容: org.hibernate.HibernateException: identifier of an instance of org.cometd.hibernate.User altered from 12 to 3 实际上,我的表确实必须动态更改其值,我的Java应用程序是多线程的。任何想法如何解决? 问题答案: 您是否要在某个地方更改User对象的主键值?你不应该那样做。检查主键

  • 问题内容: 我陷入了这个问题。数据库架构是由其他人提供的,因此我不能简单地更改名称。我尝试在各处添加适当的注释,也许我遗漏了一些(显而易见的)? 这是我的完整映射(很多类),我将省略getter / setter。 问题是当冬眠试图获得全部 控制规则 ControlRuleAttrib ControleRuleAttribPK 这里的问题是,是否有可能以某种方式得到实体的?如您所见,以下是的ID

  • 问题内容: 我正在尝试在我的员工实体中关联功能列表(可嵌入),H2对此表示不满,因为它期望使用“标识符” 由以下原因引起:org.h2.jdbc.JdbcSQLException:SQL语句中的语法错误“ CREATE TABLE EMPLOYEE_FUNCTIONS(EMPLOYEE_EMPLOYEEID VARCHAR(255)NOT NULL,ACTIVE BOOLEAN NOT NULL,

  • 问题内容: 我在了解线程安全的详细信息时遇到了问题。我知道这本身并不是线程安全的,所以我不会从多个线程访问它们。但是,我找不到有关Hibernate实体的线程安全性的任何信息。我可以在多线程中修改它们,而又仍然将它们附加到用于加载它们的会话中吗? 我不会使用延迟加载(我知道这会导致并发问题)。实体将被正确同步,并且hibernate将通过同步的getter访问它们。 我设想的方案: 使用hiber

  • 问题内容: 我收到的时候我想改变我的以下异常中的。 我知道我要更改表中的主键。我正在使用JPA注释。 我通过使用以下单个HQL查询解决了此问题: 而不是使用更多的OO方法: 知道差异是什么吗? 问题答案: 我无法想象你为什么要这么做。完全没有 您为什么要更改实体的身份?您还需要更新指向它的其他表中的所有外键。似乎很痛苦,没有收获。您最好将其设置为“业务密钥”(普通属性),并使用更永久的代理密钥。我

  • 问题内容: 对于使用不区分大小写的数据库模式的JPA实体模型,当我使用@IdClass批注时,始终会出现“实例标识符已更改”异常。对于具有“字符串”主键的对象,当数据库中存在一种情况的字符串并且使用相同的字符串(仅大小写不同)执行查询时,将发生错误。 我看过其他的SO答案,它们的形式是:a)不要修改主键(我不是),b)equals()/ hashCode()实现有缺陷。对于’b’,我尝试使用和,但