【问题标题】:Transaction issues交易问题
【发布时间】:2016-03-31 04:26:32
【问题描述】:

我想要做的是保存一个用户,然后保存一个餐厅实体。我以为这很容易,但似乎我没有理解一些东西。

    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 data jpa (1.9.2.RELEASE)、weblogic 12c、mysql 5.6.17。 如果在 weblogic 中启用了相关的 Emulate Two-Phase Commit。

你能给我建议如何正确地做到这一点吗?

【问题讨论】:

  • 您能否将您的日志级别设置为 info 并发布更多日志信息。可能必须有一个例外。发布有关异常的日志。

标签: mysql spring jpa weblogic12c


【解决方案1】:

用户 ID 是自动生成的。 save 方法无法在没有 id 的实体和 dto 之间建立连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2015-02-06
    • 2012-01-23
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多