休眠一对一关系错误

保罗

我有这种关系

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "candidacy")
@XmlElement
@Getter
@Setter
private InformCandidacy informCandidacy;



    @OneToOne
@JoinColumn(name = "candidacy_id", nullable = false, insertable = false, updatable = false)
@Getter
@Setter
private Candidacy candidacy;

在数据库上,我声明我的FK

                <addForeignKeyConstraint baseColumnNames="candidacy_id" baseTableName="inform_candidacy" constraintName="fk_candidacy_inform_candidacy"   onDelete="CASCADE" onUpdate="CASCADE" referencedColumnNames="id" referencedTableName="candidacy"/>

但是,当我尝试坚持级联候选资格,然后保存第一次在数据库上尚不存在的InformCandidacy时,它们之间的关系没有创建,并且InformCandidacy对于Candidacy为空

    @Override
public void saveAll(final List<Candidacy> candidacies) {
    for (Candidacy candidacy : candidacies) {
        Candidacy candidacyDB = findById(candidacy.getId());
        candidacy.getInformCandidacy().setCandidacy(candidacyDB);
        candidacyDB.setInformCandidacy(candidacy.getInformCandidacy());
        candidacyRepository.save(candidacyDB);
    }
}

在我的InformCandidacy表格中,我与Candidacy没有关系

       *************************** 1. row ***************************
            id: 101
      candidacy_id: NULL <--------- WTF!
     selected_number: NULL
     information_letter: NULL
    selection_decision: NULL
     selectionReport: 2014-06-28

我做错了。

问候。

wesker317

您的映射告诉hibernate不要插入或更新“ candidacy_id”列(可插入=假,可更新=假)。这样尝试:

@OneToOne
@JoinColumn(name = "candidacy_id", nullable = false)
@Getter
@Setter
private Candidacy candidacy;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章