@OneToOne bidirectional mapping with @JoinColumn

后端 未结 2 811
春和景丽
春和景丽 2020-12-03 16:53

Let\'s say I have Person

class Person{
    @Id Integer id;

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

and Job

2条回答
  •  抹茶落季
    2020-12-03 17:14

    Your code should be:

    @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;
    }  
    

    (pay attemption to remove duplicated colum 'person_id' from Job)

    or other approach sharing primary key:

    @Entity
    public class Person {
        @Id Integer id;
    
        @OneToOne(cascade = CascadeType.ALL)
        @PrimaryKeyJoinColumn
        Job myJob;
    }            
    
    @Entity
    public class Job {
        @Id Integer id;
    } 
    

提交回复
热议问题