繁体   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