2016-07-03 4 views
0

Im пытается обновить СубъектHibernateTransactionManager откат транзакции

@Test 
@Transactional 
public void test(){ 
    ChatState chatState = chatStateDAO.read(1L); 
    chatState.setState(2); 
    chatStateDAO.update(chatState); 
    chatState.setState(2); 
} 

метод обновления зовёт спящий режим сеанса update(). Вот что у меня в журнале

2016-07-03 17:36:28 TRACE SessionImpl:219 - Opened session at timestamp: 14675565886 
2016-07-03 17:36:28 TRACE SessionImpl:1493 - Setting flush mode to: ALWAYS 
2016-07-03 17:36:28 TRACE DefaultSaveOrUpdateEventListener:210 - Updating detached instance 
2016-07-03 17:36:28 TRACE DefaultSaveOrUpdateEventListener:275 - Updating [ru.jeak.telegram.model.ChatState#1] 
2016-07-03 17:36:28 TRACE DefaultSaveOrUpdateEventListener:322 - Updating [ru.jeak.telegram.model.ChatState#1] 
2016-07-03 17:36:28 TRACE MyHibernateTransactionManager:943 - Triggering beforeCompletion synchronization 
2016-07-03 17:36:28 DEBUG MyHibernateTransactionManager:851 - Initiating transaction rollback 
2016-07-03 17:36:28 DEBUG MyHibernateTransactionManager:597 - Rolling back Hibernate transaction on Session [SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=ExecutableList{size=0} updates=ExecutableList{size=0} deletions=ExecutableList{size=0} orphanRemovals=ExecutableList{size=0} collectionCreations=ExecutableList{size=0} collectionRemovals=ExecutableList{size=0} collectionUpdates=ExecutableList{size=0} collectionQueuedOps=ExecutableList{size=0} unresolvedInsertDependencies=null])] 
2016-07-03 17:36:28 DEBUG TransactionImpl:86 - rolling back 
2016-07-03 17:36:28 TRACE AbstractLogicalConnectionImplementor:114 - Preparing to rollback transaction via JDBC Connection.rollback() 
2016-07-03 17:36:28 TRACE AbstractLogicalConnectionImplementor:117 - Transaction rolled-back via JDBC Connection.rollback() 
2016-07-03 17:36:28 TRACE AbstractLogicalConnectionImplementor:54 - LogicalConnection#afterTransaction 
2016-07-03 17:36:28 TRACE ResourceRegistryStandardImpl:286 - Releasing JDBC resources 

MyHibernateTransactionManager по умолчанию HibernateTransactionManager. Я не понимаю, почему эта транзакция откатывается без какого-либо сообщения об ошибке или что-то еще?

+0

@JBNizet Почему бы не сделать этот комментарий ответом? Это очень хороший ответ. – DiogoSantana

+1

@ ДиогоСантана, ты прав. Я часто начинаю как короткий комментарий, но потом я чувствую себя обязанным разработать, и мой комментарий заканчивается тем, что я отвечаю. К сожалению, OP, похоже, не заботится. –

ответ

1

Для того, чтобы изменения были постоянными, вам не нужно звонить update(). Изменения в управляемом объекте сохраняются автоматически. И update() используется для присоединения к сеансу отдельного объекта. Ваше лицо прикреплено.

Что касается откат, весенние испытания automatically rollback в конце испытания, если вы не сообщите Spring, чтобы это не было сделано.

+0

Да, это правильно. В моем случае обновление не сработало, потому что каждая операция DAO открывала новый сеанс. – flgdev

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