2016-12-02 47 views
0

我檢查了下面的編碼適用於一對一關係,但它所放置的已連接非主鍵列的主鍵值REFID如何在一對一映射中加入非主鍵列並根據該映射選擇記錄

我沒有得到答案

Data should save like this image

父類

@Entity 
@Table(name = "Parent") 
public class Parent { 

    @Id 
    @GenericGenerator(name = "j", strategy = "increment") 
    @GeneratedValue(generator = "j") 

    @Column(name = "parentId") 
    private Long parentId; 

    @Column(name = "parentName") 
    private String parentName; 

    @Column(name = "prentEmail") 
    private String prentEmail; 

    @Column(name = "cell_phone") 
    private String cellphone; 

    @Column(name = "refID") 
    private String refID; 

    @OneToOne(mappedBy = "parent", cascade = CascadeType.ALL) 
    private Student student; 

    public Parent() { 

    } 

    public Parent(String parentName, String prentEmail, String cellphone, String refID) { 


     this.parentName = parentName; 
     this.prentEmail = prentEmail; 
     this.cellphone = cellphone; 
     this.refID = refID; 

    } 
// getters and setters 
} 

Student類

@Entity 
@Table(name = "student") 
public class Student { 

    @Id 
    @Column(name="studentID", unique=true, nullable=false) 
    @GeneratedValue(generator="gen") 
    @GenericGenerator(name="gen", strategy="foreign", [email protected](name="property", value="parent")) 


    private Long studentId; 

    @Column(name = "studentName") 
    private String studentName; 

    @Column(name = "studentEmail") 
    private String studentEmail; 

    @Column(name = "StudentCLassName") 
    private String StudentCLassName; 

    @OneToOne 
    @PrimaryKeyJoinColumn 
    private Parent parent; 

    public Student() { 

    } 

    public Student(String studentName, String studentEmail, String studentCLassName) { 

     this.studentName = studentName; 
     this.studentEmail = studentEmail; 
     StudentCLassName = studentCLassName; 

    } 
// gettters and setters 
} 

MainClass

public class HibernateTest { 
    public static void main(String[] args) { 

     Parent parent=new Parent("Eregowda","[email protected]","9964289813","ReferenceID1"); 
     Student student=new Student("Pradee","[email protected]","10th"); 

     Configuration cfg = new Configuration(); 
     cfg.configure(); 

     SessionFactory factory = cfg.buildSessionFactory(); 
     Session session = factory.openSession(); 

     Transaction tx = session.beginTransaction(); 
     tx.begin(); 



     parent.setStudent(student); 
     student.setParent(parent); 


     session.save(parent); 

     tx.commit(); 
     session.close(); 


    } 
} 
+0

您是否嘗試過用「@ PrimaryKey'JoinColumn – karelss

+0

亞,但在學生的表聯接的列越來越父主鍵值不ReferenceID1 –

回答

0
@OneToOne(optional = true) 
@JoinColumn(name = "parent", referencedColumnName = "refID", insertable = true, updatable = true) 
0

您的學生使用類@JoinColumn通過指定特定的列聯接列。

@OneToOne(optional = true) 
@JoinColumn(name = "parent", referencedColumnName = "refID", insertable = false, updatable = false) 
+0

它不工作試圖父對象自身努力「@JoinColum」這一翻譯插入 –