交易问题
Transaction issues
我想做的是保存一个用户,然后保存一个餐厅实体。我以为这会很容易,但似乎我没有理解某些东西。
userService.save(user); //this one runs just fine
selectedRestaurant.getEmployees().add(user);
restaurantService.save(selectedRestaurant); //exception
两者之间的关系是@OneToMany。不使用事务注释。
我认为第一个打开交易并关闭它,第二个也这样做。但在试图拯救餐厅后,我得到了这个:
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Obtaining JDBC connection
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Obtained JDBC connection
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl - Skipping aggressive release due to registered resources
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.jpa.spi.AbstractEntityManagerImpl - Mark transaction for rollback
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl - HHH000106: Forcing container resource cleanup on transaction completion
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.spi.SqlExceptionHelper - could not log warnings
java.sql.SQLException: Statement has already been closed
为什么要回滚?
我正在尝试使用 spring 数据 jpa (1.9.2.RELEASE)、weblogic 12c、mysql 5.6.17。
如果在weblogic中启用了相关的Emulate Two-Phase Commit。
你能给我建议如何正确地做到这一点吗?
用户 ID 是自动生成的。 save 方法无法在实体和没有 id 的 dto 之间建立连接。
我想做的是保存一个用户,然后保存一个餐厅实体。我以为这会很容易,但似乎我没有理解某些东西。
userService.save(user); //this one runs just fine
selectedRestaurant.getEmployees().add(user);
restaurantService.save(selectedRestaurant); //exception
两者之间的关系是@OneToMany。不使用事务注释。 我认为第一个打开交易并关闭它,第二个也这样做。但在试图拯救餐厅后,我得到了这个:
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Obtaining JDBC connection
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.internal.LogicalConnectionImpl - Obtained JDBC connection
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl - Skipping aggressive release due to registered resources
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.jpa.spi.AbstractEntityManagerImpl - Mark transaction for rollback
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl - HHH000106: Forcing container resource cleanup on transaction completion
[[ACTIVE] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.engine.jdbc.spi.SqlExceptionHelper - could not log warnings
java.sql.SQLException: Statement has already been closed
为什么要回滚?
我正在尝试使用 spring 数据 jpa (1.9.2.RELEASE)、weblogic 12c、mysql 5.6.17。 如果在weblogic中启用了相关的Emulate Two-Phase Commit。
你能给我建议如何正确地做到这一点吗?
用户 ID 是自动生成的。 save 方法无法在实体和没有 id 的 dto 之间建立连接。