left join fetch 应用:查找BusinessVersion表中的信息时同时抓取关联的BusinessOrganInfo信息,记录下来以备后用:
BusinessVersion.java
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ORGAN_ID")
private BusinessOrganInfo businessOrganInfo;
public BusinessOrganInfo getBusinessOrganInfo() {
return businessOrganInfo;
}
public void setBusinessOrganInfo(BusinessOrganInfo businessOrganInfo) {
this.businessOrganInfo = businessOrganInfo;
}
BusinessOrganInfo.java(这儿只用到了单向的关联抓取,可以不用在该实体中声明@OneToMany了)
@OneToMany(mappedBy = "businessOrganInfo", cascade = CascadeType.ALL)
private List<BusinessVersion> businessVersions;
public List<BusinessVersion> getBusinessVersions() {
return businessVersions;
}
public void setBusinessVersions(List<BusinessVersion> businessVersions) {
this.businessVersions = businessVersions;
}
BusinessVersionDao.java
public BusinessVersion findById(BusinessVersion bv){
List<BusinessVersion> businessVersions = this.findByHql(" from BusinessVersion as b left join fetch b.businessOrganInfo where b.id=?",bv.getId());
if(businessVersions!=null && businessVersions.size()>0){
return businessVersions.get(0);
}else{
return null;
}
}businessVersion.jsp
<tr align="right">
<td style="font-size: 12px">机构:</td>
<td><input name="businessVersion.businessOrganInfo.organName" ...."/><span style="font-family: Arial, Helvetica, sans-serif;"></td>
</tr>
本文展示了如何在Java中利用@ManyToOne注解和FetchType.LAZY属性来实现左连接查询,同时获取关联的BusinessOrganInfo实体。通过自定义的BusinessVersionDao接口,我们实现了通过ID查询BusinessVersion并附带其关联的组织信息。

1302

被折叠的 条评论
为什么被折叠?



