java - Hibernate一对一关系错误

标签 java spring hibernate

我有这种关系

    @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"/>

但是当我尝试坚持级联 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

我做错了什么。

问候。

最佳答案

您的映射告诉 hibernate 不要插入或更新“candidacy_id”列(insertable = false,updatable = false)。试试这个方法:

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

关于java - Hibernate一对一关系错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24458223/

相关文章:

java - Alfresco - 如何在单选按钮中动态添加更多选项?

java - 如何在 AuthenticationSuccessHandler 中检索 session 范围的 bean?

java - Spring 启动休息 api : how to respond gracefully if Request Body is sent in incorrect format?

java - Jackson/Hibernate、元获取方法和序列化

Hibernate 在编译时抛出 "QueryException",虽然 SQL 是有效的

java - 如何将 CSV 文件中的数据作为事实传递给 Drools?

java - 在java中比较2个字符串数组并打印两个数组中相同的元素

java - 如何防止在Spring Boot单元测试中执行import.sql

java - 为什么我新创建的 Ebean 对象的 id 错误?

java - Spring中如何读取jBoss配置文件?