我目前面临的问题如下:
Exception in thread "main" javax.persistence.EntityExistsException: a different object with the same identifier value was already associated with the session: [de.entities.Genre#28]
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1359)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1310)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1316)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:881)
at de.model.DatabaseBuilder.importData(DatabaseBuilder.java:87)
at de.main.Main.main(Main.java:55)
所以异常告诉我我想插入两个具有相同主键 id 的不同对象。
我想使用 JPA 插入数据库的所有数据都来自 XML 文件。我用 SAXParser 解析这个文件。当然,id 为 28 的类型条目很多,因为许多电影具有相同的类型。
如果我使用自动生成的 id,数据将不再正确,因为所有 id 都由 XML 文件正确给出。
我怎么解决这个问题?为什么 JPA 不只是忽略这一事实,即该对象已经存在于数据库中,并且只是在我的 m:n 表中插入电影的 ID 和流派?