相关联的I具有以下面的方式与两个彼此对象:休眠更新例外:一个不同的对象使用相同的标识符值已经与会话
Item.java
@Entity
@Table(name = "item")
public class Item {
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "item", cascade=CascadeType.ALL)
private Set<ItemConfiguration> ItemSettings = new HashSet<ItemSettings>();
}
ItemSetting。 Java的
@Entity
@Table(name = "item_setting")
public class ItemSetting {
@Id
@GeneratedValue
@Column(name = "id")
private Long id;
@Column(name = "type")
private String type;
@Column(name = "value")
private String value;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "item_id", nullable = false)
private Item item;
}
我试图更新由以下语句的顺序设置:
ItemSettings settings = item.getSettingByType(type); // returns one of the settings that has matching type
settings.setValue("new value");
this.itemDAO.updateItem(item);
这将导致一个例外:
不同的对象有同样的标识值已经 与会话
我不明白为什么会发生相关。我不是多次从数据库加载相同的setting
。方法item.getSettingByType(type)
通过遍历与项目关联的一组设置来获取setting
。
如果您想用于帮助您,可能会添加更多详细信息和代码,因为此时需要更多。 – Zorglube
您可以尝试在这里接受的答案:http://stackoverflow.com/questions/3609653/hibernate-error-org-hibernate-nonuniqueobjectexception-a-different-object-with?answertab=active#tab-top –