gpt4 book ai didi

java - HibernateTransactionManager 回滚事务

转载 作者:行者123 更新时间:2023-12-01 09:44:35 25 4
gpt4 key购买 nike

我正在尝试更新实体

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

update方法正在调用hibernate session 的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。我不明白为什么此事务会回滚而没有任何错误消息或其他内容?

最佳答案

您不需要调用 update() 来使更改持久化。对托管实体的更改会自动保存。 update() 用于将分离实体附加到 session 。您的实体已附加。

关于回滚,Spring测试automatically rollback在测试结束时,除非你告诉Spring不要这样做。

关于java - HibernateTransactionManager 回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com