[英]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.