2013-04-08 2 views
2

Я использую eclipselink с jpa, и когда я делаю фиксацию иногда im, имеющую ошибку с отсутствием информации, есть способ получить дополнительную информационную ошибку, которая может помочь мне найти причину ошибка быстро?Дополнительная информация в фиксации менеджера сущности

entityManager.getTransaction().commit(); 
+1

Какая ошибка у вас возникла? – Simiil

ответ

1

Это типичный случай, когда само совершение ошибки не выполняется. Наиболее типично, когда в базе данных есть ограничение, что не известно уровню JPA. Например, в столбце таблицы базы данных может быть уникальное ограничение, которое не определено в JPA, в этом случае коммит будет выдавать ошибку. Итак, мое предложение проверяет возможность нарушения ограничений базы данных. Кроме того, вы должны поймать javax.transaction.RollbackException вокруг вашей сделки:

try { 
    entityManager.getTransaction().begin(); 
    ... 
    entityManager.getTransaction().commit(); 
} catch (RollbackException e1) { 
    System.out.println(e1.getMessage()); 
    System.out.println(e1.getCause()); 
    throw ...; 
} 

e1.getCause() должен содержать нарушенное ограничение. По крайней мере, при использовании цивилизованной базы данных и драйвера JDBC :).

Смежные вопросы