そのため、Sax を使用して Xml ファイルを解析していて、データベースにエンティティが既に存在するかどうかを確認したいと考えています。コード @endElement の createQuery 部分を使用しています。
EntityManagerFactory factory = Persistence.createEntityManagerFactory("PU");
em = factory.createEntityManager();
em.getTransaction().begin();
........
empExisists = em.createQuery("SELECT s FROM Employee s WHERE s.userName=:userName", Employee.class). setParameter("userName", emp.getUserName()).getSingleResult();
このコードは既にアプリケーションの別の場所で使用していますが、問題なく動作しました。
ここで、非常に奇妙なことが起こります。主キー違反があるため、SQLIntegrityConstraintException が発生しています。
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: Die Anweisung wurde abgebrochen, weil sie in einer für 'EMPLOYEE' definierten Vorgabe für einen eindeutigen oder Primärschlüssel bzw. für einen von 'SQL120805145505950' bezeichneten eindeutigen Index zu einem duplizierten Schlüsselwert geführt hätte.
ここでエンティティを永続化するつもりはないため、この例外が表示される理由は本当にわかりません。私の持続部分は、すべての ConstraintViolationExceptions をキャッチする endDocument にあります。