我正在尝试编写一个导入数据文件的Java应用程序。过程如下
步骤3中加载的数据与步骤3中删除的数据大致相同。
使用以下
执行删除DetachedCriteria criteria = DetachedCriteria.forClass(myObject.class);
List<myObject> myObjects = hibernateTemplate.findByCriteria(criteria);
hibernateTemplate.deleteAll(myObjects);
当我加载数据文件时,我得到以下异常
nested exception is org.hibernate.NonUniqueObjectException:
a different object with the same identifier value was already associated with the session:
整个过程需要在交易中进行。 我真的不想比较导入文件/数据表,然后执行插入/更新/删除以使它们同步。
任何帮助将不胜感激。
答案 0 :(得分:0)
最短的答案,请使用session.merge()
简短回答,使用普通的jdbc hibernate是这项工作的错误工具。
更长的答案,看看你的数据库工具在这方面支持什么 解决方案可能是:
您的整个表格将被锁定在您的用例中,因此这应该不是问题。
答案 1 :(得分:0)
第一个想法:您是否在第2步之后尝试flush()
Session
?
第二个想法:使用the StatelessSession
interface。由于SPR-6202和SPR-2495尚未解决,您可能需要延长HibernateTemplate
。