2017-07-19 41 views
0

查看我的2個實體類的代碼 - 當我從我的OrigRepository類調用findAll()方法時,它使用兩個主鍵連接這兩個表。我想要加入Orig表的主鍵和MsgResponse表(「OrigID」)中的外鍵項之間 - 任何建議?Spring引導應用程序中的Hibernate/JPA不正確加入

原稿實體

@Entity 
@Table(name = "originator") 
public class Orig { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "OrigID") 
    private int OrigID; 

    @OneToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name = "OrigID") 
    private MsgResponse responseInfo; 
} 

MsgResponse實體

@Entity 
@Table(name = "message_response") 
public class MsgResponse { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "ID") 
    private int responseId; 

    @Column(name = "OrigID") 
    private int OrigId; 

    @OneToOne(mappedBy="responseInfo") 
    private Orig OrigInfo; 
} 

回答

0

我建議你看JPA文檔 here

例1應該是你的情況

+0

感謝您的回覆。試過這個,現在桌子根本沒有加入。我需要在我的(Spring Boot)應用程序的其他地方配置關係嗎? – James

0

嘗試交換關係的所有權,那就是:

@Entity 
@Table(name = "originator") 
public class Orig { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "OrigID") 
    private int OrigID; 

    @OneToOne(mappedBy="origInfo") 
    private MsgResponse responseInfo; 
} 

@Entity 
@Table(name = "message_response") 
public class MsgResponse { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "ID") 
    private int responseId; 

    // @Column(name = "OrigID") 
    // private int origId; 

    @OneToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name = "OrigID") 
    private Orig origInfo; 
} 

注意,@JoinColum註釋是在現在的MsgResponse實體。這是因爲在@OneToOne中,連接列指的是實體(請參閱here)。

希望這可以幫助。

相關問題