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