所以我正在用 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.
我真的不知道为什么会出现这个异常,因为我不想在这里保留任何实体。我的持久部分位于 endDocument 中,我在其中捕获了所有 ConstraintViolationExceptions。