2016-10-05 4 views
0

Я использую openjpa и использую магазин и фиксирую.JPA транзакция исключение получение реальной причины - вложенные исключения

Commit иногда запускает исключение, но я не могу получить больше исправлений.

Иногда, я думаю, это проблема целостности (сохранение в два раза с той же датой).

сообщение об ошибке и стек являются:

The transaction has been rolled back. See the nested exceptions for details on the errors that occurred. 
<openjpa-2.4.1-r422266:1730418 fatal store error> org.apache.openjpa.persistence.RollbackException: The transaction has been rolled back. See the nested exceptions for details on the errors that occurred. 
... 

Но где найти более подробные причины, или как получить вложенные исключения?

Благодаря

+0

Javadoc, возможно? https://openjpa.apache.org/builds/1.0.1/apache-openjpa-1.0.1/docs/javadoc/org/apache/openjpa/persistence/RollbackException.html#getNestedThrowables() –

+0

Где исключение поймали и отправлено в регистратор? Я думаю, вы могли бы передать это сообщение, а не само исключение, поэтому оно не отображает стеки и вложенные исключения. – coladict

+0

Я согласен с предыдущим комментарием. В стеке исключений должно быть больше, и информация должна быть «вызвана». Посмотрите в своем системном выводе или журналах для получения дополнительной информации, включите трассировку OpenJPA или сделайте «printStackTrace()», когда вы поймаете исключение. –

ответ

1

была такая же проблема, JPA совершить было вложенности исключения из моего JPA сохраняющихся вызовов и хоронить их, потому что я использовал только e.getMessage()

public static List<String> getExceptionMessageChain(Throwable throwable) { 
    List<String> result = new ArrayList<String>(); 
    while (throwable != null) { 
     result.add(throwable.getMessage()); 
     throwable = throwable.getCause(); 
    } 
    return result; //["THIRD EXCEPTION", "SECOND EXCEPTION", "FIRST EXCEPTION"] 
} 

catch(Exception e) { 
    // JPA Exceptions can be nested, need to get entire chain 
    getExceptionMessageChain(e).forEach(System.out::println); 
} 

Источник: Get detail messages of chained exceptions Java

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

  • Нет связанных вопросов^_^