2016-07-03 5 views
0

임 세션의 update()를 최대 절전 모드로 호출됩니다. 여기에 내 로그가 무엇HibernateTransactionManager를 롤백 트랜잭션

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

@DiogoSantana 당신 말이 맞아요. 나는 종종 짧은 논평으로 시작하지만, 그 다음에는 정교하게 대답해야하고 내 의견은 대답이됩니다. OP가 불행히도 신경 쓰이는 것 같지 않습니다. –

답변

1

변경 사항을 적용하려면 update()으로 전화하지 않으셔도됩니다. 관리되는 엔티티에 대한 변경 사항은 자동으로 저장됩니다. 그리고 update() 엔티티를 세션에 연결하는 데 사용됩니다. 엔티티가 첨부되어 있습니다.

롤백에 관해서는, 스프링에게하지 말라고하지 않는 한, 테스트 마지막에 automatically rollback을 테스트합니다.

+0

네, 맞습니다. 필자의 경우 모든 DAO 작업이 새로운 세션을 열기 때문에 업데이트가 작동하지 않았습니다. – flgdev