hibernate outer join 的问题,解决立马结贴

lovemy015 2012-07-06 11:12:24
hibernate 查询的时候 OneToMany 如何让Criteria 查询自动为left outer join
具体情况如下
实体类
public class BaseStation extends BaseEntity{
private String stationId;
private District districts;
private List<DeviceViolation> deviceViolations = new ArrayList<DeviceViolation>();

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "districtcode")
public District getDistricts() {
return this.districts;
}

@Fetch(FetchMode.JOIN)
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="stationid")
public List<DeviceViolation> getDeviceViolations() {
return deviceViolations;
}
}

通过 Criteria查询,没有查询条件
打印出来的sql为
select
this_.stationid as stationid0_2_,
deviceviol2_.stationid as stationid4_,
deviceviol2_.deviceid as deviceid4_,
deviceviol2_.deviceid as deviceid2_0_,
deviceviol2_.stationid as stationid2_0_,
deviceviol2_.checkcrosslines as checkcro2_2_0_,
deviceviol2_.checkmaxspeed as checkmax3_2_0_,
deviceviol2_.checkminspeed as checkmin4_2_0_,
deviceviol2_.checkoccupy as checkocc5_2_0_,
deviceviol2_.checkoppsite as checkopp6_2_0_,
deviceviol2_.checkyellowplate as checkyel7_2_0_,
deviceviol2_.deviceip as deviceip2_0_,
deviceviol2_.maxspeed as maxspeed2_0_,
deviceviol2_.minspeed as minspeed2_0_,
deviceviol2_.speedratio as speedratio2_0_,
deviceviol2_.updatedate as updatedate2_0_,
deviceviol2_.updateuser as updateuser2_0_,
deviceviol2_.workmode as workmode2_0_,
district3_.districtcode as district1_5_1_,
district3_.districtname as district2_5_1_
from
WZCFUSR.basestations this_,
WZCFUSR.deviceviolation deviceviol2_,
WZCFUSR.districts district3_
where
this_.stationid=deviceviol2_.stationid(+)
and this_.districtcode=district3_.districtcode(+)

为什么sql不是用 left outer join
我以前做的一个项目我记得打印的sql 都是用 left outer join的
怎么做才能让生成的sql 用 left outer join 呢
望各位大侠指点迷津!

...全文
181 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iamagril 2012-07-09
  • 打赏
  • 举报
回复
很少用 Hql 语句,估计是参数设的不对
lovemy015 2012-07-06
  • 打赏
  • 举报
回复
来个高手
lovemy015 2012-07-06
  • 打赏
  • 举报
回复
求救啊
lovemy015 2012-07-06
  • 打赏
  • 举报
回复
谁能帮忙解决一下啊!
lovemy015 2012-07-06
  • 打赏
  • 举报
回复
如果 HQL 执行 String hql = "from BaseStation" 会不会解析成 left outer join呢,我记得以前只要@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)只要是FetchType.EAGER生成的sql就是left outer join 形式的。但是现在我这边不管怎么设置都不是left outer join
宏Lee 2012-07-06
  • 打赏
  • 举报
回复
不熟悉Criteria 就用HQL或者sql,换个写法不是一样的
lovemy015 2012-07-06
  • 打赏
  • 举报
回复
继续等
lovemy015 2012-07-06
  • 打赏
  • 举报
回复
来人啊!等答案呢

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧