【问题标题】:Hibernate java.lang.IllegalStateException An entity copy was already assigned to a different entity when I copy database from csvHibernate java.lang.IllegalStateException 当我从 csv 复制数据库时,实体副本已分配给不同的实体
【发布时间】:2014-06-24 15:40:54
【问题描述】:

我在将实体保存到数据库时遇到以下问题。我使用hibernate和postgresql

java.lang.IllegalStateException: Error occurred while storing entity [chart]. An entity copy [de.enwida.web.model.user.Role#2] was already assigned to a different entity [chart].
at org.hibernate.event.internal.EventCache.put(EventCache.java:192)
at org.hibernate.event.internal.DefaultMergeEventListener.entityIsDetached(DefaultMergeEventListener.java:285)
at org.hibernate.event.internal.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:151)
at org.hibernate.internal.SessionImpl.fireMerge(SessionImpl.java:924)
at org.hibernate.internal.SessionImpl.merge(SessionImpl.java:906)

我注意到的是,如果我用插入命令填充 DB,通常代码可以工作 但是当我用 COPY 命令填充它时它不起作用,例如

copy users.groups from '/home/tarazano/Downloads/server/users.groups.csv';

我的代码是这样的

    // Modify user's set of groups
    final Set<Group> groups = new HashSet<Group>(user.getGroups());
    groups.add(group);
    user.setGroups(groups);
    userDao.update(user, true); // with flush

我认为问题出在复制命令上。当我手动复制表格内容时,没有生成什么?也许索引?

请帮帮我,我已经花了很多时间在这上面

【问题讨论】:

    标签: java hibernate postgresql csv


    【解决方案1】:

    我仍然不知道为什么它不起作用,但我找到了解决方法。只是我只是使用了 createNativeQuery 方法 entityManager

    EntityManager em;
    em.createNativeQuery(" INSERT INTO users.group_role(group_id, role_id) VALUES ("+group.getGroupID()+","+role.getRoleID()+")");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多