|
|
|
Hibernate, CMT и обработка исключений
|
|||
|---|---|---|---|
|
#18+
Session Bean + Hibernate. В jboss-service.xml секция, касающаяся транзакций описана так: <!-- Transaction integration --> <attribute name="TransactionStrategy"> org.hibernate.transaction.CMTTransactionFactory </attribute> <attribute name="TransactionManagerLookupStrategy"> org.hibernate.transaction.JBossTransactionManagerLookup </attribute> <attribute name="FlushBeforeCompletionEnabled">true</attribute> <attribute name="AutoCloseSessionEnabled">true</attribute> т.е. всё управление транзакциями перекладываем на контейнер. Когда пытаюсь перехватить какое-нибудь исключение из вида HibernateException, то ничего не получается, не вываливаемся мы туда. Я так понимаю это именно из-за CMT. Но в лог jboss-а записываются все исключения, которые возникают. Есть ли какие-нибудь стандартные способы обработки ошибок в случае, если используется CMT ? В частности, мне нужно отловить ситуацию, когда нарушена уникальность какого-либо поля и при этом выдать ругательное сообщение. Или в этом случае придётся отказаться от CMTTransactionFactory и использовать JTATransactionFactory ? Вот пример одного из методов из моего DAO Session Bean: public void createClient(Client client) throws ConstraintViolationException, HibernateException { Transaction tx = null; try { Session session = sf.getCurrentSession(); tx = session.beginTransaction(); session.save(client); tx.commit(); } catch(ConstraintViolationException cve) { if (tx!=null) { tx.rollback(); } throw cve; } catch(HibernateException he) { if (tx!=null) { tx.rollback(); } throw he; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2006, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33565454&tid=2150087]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
189ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 521ms |

| 0 / 0 |
