私が現在直面している問題は次のとおりです。
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 を持つ 2 つの異なるオブジェクトを挿入する必要があることを示しています。
JPA を使用してデータベースに挿入したいすべてのデータは、XML ファイルから取得されています。このファイルを SAXParser で解析します。もちろん、同じジャンルの映画はたくさんあるので、id 28 のジャンル エントリはたくさんあります。
自動生成された ID を使用すると、すべての ID が XML ファイルによって正しく指定されるため、データは正しくなくなります。
どうすればこの問題を解決できますか? JPA は、このオブジェクトがデータベースに既に存在し、映画の ID とジャンルを m:n テーブルに挿入するという事実を無視しないのはなぜですか?