11 Mayıs 2015 Pazartesi

Getting RollbackException in Transactional Methods

Hi,

Here is the second problem i have to deal with, RollbackException.
As I search on Google, if you get exception in a transactional method, even if you catch it and not throw, the transaction is marked as rollback only and you cannot commit anything in this transaction.
This may be annoying if you get an ignorable exception, for example NoResultException.
For overcome this, you should take some precautions with Transactional annotation, like this,

@Transactional(rollbackFor=MyException.class, noRollbackFor=MyException2.class)
Specifying rollback and no-rollback situations is the best way to handle this.

Have a nice day!

Link: http://stackoverflow.com/questions/19302196/transaction-marked-as-rollback-only-how-do-i-find-the-cause


About JPA NoResultException

Hi,

Today I looked for NoResultException, wondered when it may occurs, found that,

If you search record with getSingleResult, NoResultException is thrown, because, as written at stackoverflow,

"If getSingleResult() would return null, you could not tell whether the query did not match any row or whether the query matched a row but the selected column contains null as its value"

Otherwise, if you search with query, the return object will be null(or if you cast result to List, it will be empty), so you should deal with null or empty list in this situation.

Link: http://stackoverflow.com/questions/1579560/why-in-jpa-entitymanager-queries-throw-noresultexception-but-find-does-not

Have a nice day !