Hibernate java.lang.IllegalStateException当我从csv复制数据库时,实体副本已经分配给了另一个实体

时间:2014-06-24 15:40:54

标签: java hibernate postgresql csv

将实体保存到数据库时出现以下问题。我使用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)

我注意到的是,如果我使用insert命令填充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

我认为问题是复制命令。当我手动复制表内容时,不会生成某些内容?也许指数?

请帮助我,我已经花了很多时间在这个

1 个答案:

答案 0 :(得分:0)

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

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