带有 Oracle Database 18c 的 Weblogic 12c:setTransactionOnly() 在事务错误时调用
Weblogic 12c with Oracle Database 18c: setTransactionOnly() called on transaction error
我有一个企业应用程序,其中包含一些 JPA 2.1 实体。我通过来自 WebLogic 的已注册 JNDI 数据源访问数据库。 JPA 实现是 Hibernate 5.2.17。我正在使用 Spring Data JPA 来简化数据库访问。
相关实体:
public class PermissionEntity implements Serializable {
private static final long serialVersionUID = -3862680194592486778L;
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String permission;
@ManyToMany
private List<RoleEntity> roles;
}
当我尝试插入新实体时,我从 WebLogic 收到以下异常:weblogic.transaction.internal.AppSetRollbackOnlyException: setRollbackOnly called on transaction
。
其他实体不会发生此错误。无论是在这个还是在其他 EAR 中,理论上所有配置都是相同的。
这可能是违反约束或其他原因。
为了理解问题,请在托管服务器启动参数上设置以下标志:
-Dweblogic.transaction.allowOverrideSetRollbackReason=true
这样您应该会得到一个错误堆栈,其中包含有关容器事务失败的更多相关信息。
我有一个企业应用程序,其中包含一些 JPA 2.1 实体。我通过来自 WebLogic 的已注册 JNDI 数据源访问数据库。 JPA 实现是 Hibernate 5.2.17。我正在使用 Spring Data JPA 来简化数据库访问。
相关实体:
public class PermissionEntity implements Serializable {
private static final long serialVersionUID = -3862680194592486778L;
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String permission;
@ManyToMany
private List<RoleEntity> roles;
}
当我尝试插入新实体时,我从 WebLogic 收到以下异常:weblogic.transaction.internal.AppSetRollbackOnlyException: setRollbackOnly called on transaction
。
其他实体不会发生此错误。无论是在这个还是在其他 EAR 中,理论上所有配置都是相同的。
这可能是违反约束或其他原因。 为了理解问题,请在托管服务器启动参数上设置以下标志:
-Dweblogic.transaction.allowOverrideSetRollbackReason=true
这样您应该会得到一个错误堆栈,其中包含有关容器事务失败的更多相关信息。