使用@JoinColumn进行@OneToOne双向映射

Mar*_*era 3 hibernate primary-key one-to-one

假设我有人

class Person{
    @Id Integer id;

    @OneToOne
    @JoinColumn(name = "person_id")
    Job myJob;
}
Run Code Online (Sandbox Code Playgroud)

和约伯

class Job{
    @Id Integer id;
    Integer person_id;

    @OneToOne
    @PrimaryKeyJoinColumn(name = "person_id")
    Person currentWorker;
}
Run Code Online (Sandbox Code Playgroud)

在获取时,我无法将Person和Job映射到其他实体.
我做错了什么?

Gua*_*o79 9

你的代码应该是:

@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;
}  
Run Code Online (Sandbox Code Playgroud)

(付出小心,从Job中删除重复的colum'person_id')

或其他方法共享主键:

@Entity
public class Person {
    @Id Integer id;

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

@Entity
public class Job {
    @Id Integer id;
} 
Run Code Online (Sandbox Code Playgroud)