hibernate - @OneToOne 与 @JoinColumn 双向映射

标签 hibernate primary-key one-to-one

假设我有一个人

class Person{
    @Id Integer id;

    @OneToOne
    @JoinColumn(name = "person_id")
    Job myJob;
}

和工作

class Job{
    @Id Integer id;
    Integer person_id;

    @OneToOne
    @PrimaryKeyJoinColumn(name = "person_id")
    Person currentWorker;
}

获取时,我无法将人员和工作映射到其他实体。
我犯了什么错误?

最佳答案

您的代码应该是:

@Entity
public class Person implements Serializable {

    @Id Integer id;

    @OneToOne
    @JoinColumn(name = "id")
    Job myJob;
}

@Entity
public class Job implements Serializable {

    @Id Integer id;

    @OneToOne(mappedBy = "myJob")
    Person currentWorker;
}  

(尝试从作业中删除重复的列“person_id”)

或其他共享主键的方法:

@Entity
public class Person {
    @Id Integer id;

    @OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumn
    Job myJob;
}            

@Entity
public class Job {
    @Id Integer id;
} 

关于hibernate - @OneToOne 与 @JoinColumn 双向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10687529/

相关文章:

Mysql、hibernate slow_query_log日志设置时间戳

java - 使用 Spring 和 JPA,获取 java.lang.IllegalArgumentException : Unknown entity

php - GROUP BY 外键还是主键?

mysql - 如何根据MySQL表中的时间戳重置主键?

java - 将实体从另一个微服务引用到 jdl-jhipster

Spring Data JPA 流查询方法导致事务异常

java - 无法加载 hibernate.cfg.xml

c# - 插入时违反 PRIMARY KEY 约束

java - 当链接实体名称不是从父实体名称派生时,如何避免使用 OneToOne 映射出现 NullPointerException?

hibernate - 使用@Where 子句映射@OneToOne