具有Oracle Database 18c的Weblogic 12c:在事务错误时调用setTransactionOnly()

时间:2019-04-28 17:02:05

标签: java spring oracle weblogic

我有一个带有一些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

其他实体不会发生此错误。从理论上讲,所有配置都不相同。

1 个答案:

答案 0 :(得分:1)

这可能是违反约束或其他原因。 为了了解问题,请在受管服务器启动参数上设置以下标志:

-Dweblogic.transaction.allowOverrideSetRollbackReason=true

这样,您应该获得一个错误堆栈,其中包含有关容器事务失败的更多相关信息。