【发布时间】:2013-12-17 17:44:02
【问题描述】:
使用 JPA 和 mysql,我想使用 @Transaction 注释在单个事务中编写删除和插入表的程序
我的代码是这样的
//Delete
entityManager.createNamedQuery( "DELETE_QUERY" ).setParameter( "userId", userId ).executeUpdate();
entityManager.flush();
//Insert
User user = new User();
user.setUserId(122);
user.setPassword("test");
entityManager.merge( user );
entityManager.flush();
显示删除查询。然后更新查询在这里运行......然后它抛出下面提到的错误
.......
javax.persistence.OptimisticLockException: org.hibernate.StaleStateException: 批量更新从更新 [0] 返回了意外的行数;实际行数:0;预计:1
.......
原因:org.hibernate.StaleStateException:批量更新从更新[0]返回了意外的行数;实际行数:0;预期:1 ………………………………………………………………………… ………………………………………………………………………… org.springframework.transaction.TransactionSystemException:无法提交 JPA 事务;嵌套异常是 javax.persistence.RollbackException: 事务标记为 rollbackOnly
【问题讨论】: