Mysql 休眠删除问题

Mysql 休眠删除问题,mysql,hibernate,spring,transactions,Mysql,Hibernate,Spring,Transactions,我正在尝试编写一个导入数据文件的Java应用程序。过程如下 创建事务 从数据表中删除所有行 将数据文件加载到数据表中 如果遇到任何错误,请提交或回滚 步骤3中加载的数据与步骤3中删除的数据基本相同 使用以下命令执行删除 DetachedCriteria criteria = DetachedCriteria.forClass(myObject.class); List<myObject> myObjects = hibernateTemplate.findByCriteria(cri

我正在尝试编写一个导入数据文件的Java应用程序。过程如下

  • 创建事务
  • 从数据表中删除所有行
  • 将数据文件加载到数据表中
  • 如果遇到任何错误,请提交或回滚
  • 步骤3中加载的数据与步骤3中删除的数据基本相同

    使用以下命令执行删除

    DetachedCriteria criteria = DetachedCriteria.forClass(myObject.class);
    List<myObject> myObjects = hibernateTemplate.findByCriteria(criteria);
    hibernateTemplate.deleteAll(myObjects);
    
    整个过程需要在事务中进行。 我真的不想比较导入文件/数据表,然后执行插入/更新/删除以使它们同步

    任何帮助都将不胜感激

    最短答案,使用

    简而言之,使用普通的JDBCHibernate对于这项工作来说是错误的工具

    回答更多问题,请查看您的数据库工具在这方面支持什么。
    解决办法可以是:

  • 将表重命名为旧表
  • 创建一个新的空表
  • 将数据导入到新表中
  • 放下旧桌子

  • 您的整个表将被锁定在您的用例中,因此这不应该是一个问题。

    第一个想法:您是否尝试在步骤2之后刷新
    会话


    第二个想法:使用。您可能必须为此扩展
    HibernateTemplate
    ,因为和尚未解决。

    可能是最简单的解决方案。不幸的是,我们使用的db帐户只有更新/插入/删除权限。我可能不得不使用nsert/update/delete而不是drop all。。。助教
    nested exception is org.hibernate.NonUniqueObjectException: 
    a different object with the same identifier value was already associated with the session: