簡體   English   中英

Spring Boot應用程序中的Hibernate / JPA錯誤連接

[英]Hibernate/JPA incorrect join in Spring Boot Application

請參閱下面的代碼,了解我的2個實體類-當我從OrigRepository類調用findAll()方法時,它使用兩個主鍵將這兩個表連接在一起。 我希望聯接位於Orig表的主鍵和MsgResponse表中的外鍵條目(“ OrigID”)之間-有任何建議嗎?

原始實體

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

我建議您在這里查看jpa文檔。

示例1應該是您的情況

嘗試交換關系所有權,即:

@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 ,連接列引用了實體(請參見此處 )。

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM