未找到父密钥(ORA-02291)

时间:2016-06-08 12:37:15

标签: sql jpa oracle11g spring-data jhipster

在我的User对象中,我有以下连接表:

@JsonIgnore
    @ManyToMany
    @JoinTable(
            name = "JHI_USER_AUTHORITY",
            joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private Set<Authority> authorities = new HashSet<>();

我还在User对象上有一个触发器,用于在行创建时插入主ID

TRIGGER TRG_JHI_USER_ID
            BEFORE INSERT
            ON JHI_USER
            FOR EACH ROW
            DECLARE
            BEGIN
            SELECT SEQ_USER.NEXTVAL INTO :NEW.ID FROM DUAL;
            END TRG_JHI_USER_ID;

现在,当我创建一个用户时,我得到以下异常:

Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (PORTALUSER.FK_USER_ID) violated - parent key not found

似乎在尝试保留User对象时,它在执行触发器之前也会持久保存多对多表,因此没有找到user_id,如果能够正确理解的话。如何在不挖掘复杂解决方案的情况下解决这个问题?

这发生在Oracle 11中。

这是模型:

enter image description here

1 个答案:

答案 0 :(得分:1)

JHipster仅支持Oracle 12。

您可以使用JHipster for Oracle支持选择的唯一配置是Oracle 12c,这意味着它无法在Oracle 11中正常运行。

请注意,开源项目很难支持专有的付费数据库,因此我们不会使用旧版本的Oracle。