簡體   English   中英

為什么表關聯沒有在休眠中添加左外連接

[英]Why Table association is not adding left outer join in hibernate

我有一張桌子,它與另一張桌子一對一關聯。 在我的服務類中,我正在調用 findById(id)。

@Entity
@Table(name = "CRL_EC")
public class LoanOrder {
    @OneToOne(fetch = FetchType.EAGER ,cascade = CascadeType.ALL)
    @JoinColumn(name = "loan_id" , referencedColumnName = "fLoanId" ,insertable = false ,updatable = false)
    LoanEc loanEc;
}

@Entity
@Table(name = "LOAN_EC")
public class LoanEc {
    @Id
    Long fLoanId;

    @OneToOne
    @JoinColumn(name = "fLoanId",referencedColumnName = "loan_id" )
    LoanOrder loanOrder;
}


public interface ECRepository extends Repository<LoanOrder,Long>{
    void save(LoanOrder loanOrder);
}

當我通過我的 ECRepository 休眠調用findById(id) ,將其作為單獨的查詢調用。 在控制台中,我將查詢視為

select * from  LoanOrder where loan_id = ?
select * from LoanEc  where fLoanId = ?

並且結果僅當 id 存在於第二個表(LoanEc)中時。 我的期望是

select * from LoanOrder  left outer join LoanEc  on loan_id = ? 

為什么不關聯這兩個實體?

Hibernate 不執行連接,因為您的實體圖中存在一個循環,並且在 Hibernate 6.0 之前,該循環盡可能早地停止。 在 6.0 中,我們將其更改為在稍后停止,即您將獲得左外連接。

我不知道你的意思或“結果是只有在ID存在”,但如果“這兩個實體關聯” LoanEc是唯一的屬性LoanOrder的ID,或部分,則該實體將不如果LoanEc存在LoanOrder

暫無
暫無

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

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