java - 从 hibernate session 中删除对象?

标签 java hibernate spring

Possible Duplicate:
Spring + Hibernate : a different object with the same identifier value was already associated with the session

我已经使用 hibernateTemplate find by id 从数据库加载了一个对象 X,然后我从该对象中获取了一些属性,并将其添加到另一个相同类型的对象 Y 中,该对象也由相同的 X id 加载。然后当我尝试 saveOrUpdate对象 Y,hibernate 抛出异常具有相同标识符值的不同对象已与 session 关联,我认为这意味着对象 X 与同一 session 中的该属性关联,因此 Y 不能被保存或更新并影响该属性。

如何从 session 中删除对象 X,使其不再与该属性关联

我尝试使用合并而不是 saveOrUpdate它工作正常,但它与 saveOrUpdate 相同吗? ?我的意思是我可以依靠它来添加新记录或更新它们吗?

最佳答案

经过多次尝试,我发现使用合并是有效处理此问题的最佳方法,并且要处理要保存的新实例,我认为最好的方法是这样做:

if (X.getId() != null) {
    return hibernateTemplate.merge(X);
} else {
    hibernateTemplate.saveOrUpdate(X);
}

因此,如果它是要 session 的新实例,则将通过 saveOrUpdate 完成,如果它是同一行的重复实例,则将使用合并进行处理。

关于java - 从 hibernate session 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3288838/

相关文章:

java - Hibernate 中按计数排序

java - Hibernate decimal(20,3) 映射失败

Spring RuntimeBean引用

spring - Spring 中的 Setter DI 与 Constructor DI?

java - Spring 。使用@Bean 注册方面

java - 在运行时移除 FLAG_TRANSLUCENT_STATUS

java - 如何在 perforce 中获取以前的修订版 CL

java - 模拟一个类与模拟它的接口(interface)

java - 使用 Heroku 在本地部署 Spring Boot 应用程序时出现异常

java - 注释验证很慢