休眠非唯一对象异常
Posted
技术标签:
【中文标题】休眠非唯一对象异常【英文标题】:Hibernate NonUniqueObjectException 【发布时间】:2017-02-01 08:08:59 【问题描述】:我在休眠中遇到 NonUniqueObjectException。
有一个 Item 类,我使用 hibernate 的 session.save
保存了 Item 对象的列表。
现在在同一个事务中,我正在尝试使用与另一个表连接的原始 sql 查询来更新相同的项目。这给了我 NonUniqueObjectException。我要加入的两个表作为休眠的实体是不相关的,即没有外键关系。
所以我有两个问题:
首先,有没有办法使用 hql 在 hibernate 中编写内部连接查询。 二、如何避免NonUniqueObjectException。
【问题讨论】:
请在查询中添加您的交易方式.. 请参阅docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/… 了解内部连接(第 14 章)。 还要检查***.com/questions/1074081/…,NonUniqueObjectException 的一些可能原因 @MaciejKowalski - 请参见代码 sn-p String sql = "UPDATE Item INNER JOIN BinItem" + "ON Item.itemId = BinItem.itemId " + "SET Item.itemStatus = :itemStatusParam " + "WHERE BinItem.binId = :binIdParam";查询查询 = getSession().createSQLQuery(sql); query.setParameter("itemStatusParam", status.toString()); query.setParameter("binIdParam", binId); return query.executeUpdate(); @user1211 - 没有帮助,因为实体不相关。 【参考方案1】:其中一件事是在进行任何原始 sql 查询之前清除会话。欢迎任何更好的方法。
【讨论】:
以上是关于休眠非唯一对象异常的主要内容,如果未能解决你的问题,请参考以下文章
用于可迭代对象的 Java GraphQL 解析器:休眠异常