读书人

Hibernate Criteria查询有关问题:连表

发布时间: 2012-12-14 10:33:07 作者: rapoo

Hibernate Criteria查询问题:连表查询增加关联条件(生成的sql条件指定到on后面)
代码如下:
Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession();
session.createCriteria(ProjectBD.class,"h")
.add(Restrictions.eq("h.xmguid", xmguid))
.addOrder(Order.desc("h.subtime"))
.createAlias("bidCompany", "b",Criteria.LEFT_JOIN)
.add(Restrictions.eq("b.xxx", 1))
.list();

这里连表生成的sql语句中b.xxx这个条件是在where后面的,怎么加到 left join ... on ( 这里 )

[最优解释]
直接where ,,,还有and 啊。。
from ProjectBD p left join p.bidCompany b where xmguid=? and b.xxxxx=? order by subtime 不行吗?
[其他解释]
用着中动态的查询的话,是不能多表关联的!建议用hql吧!
[其他解释]
顶上去啊,没人回答?没人知道?
[其他解释]
该回复于2012-12-04 16:35:02被管理员删除
[其他解释]

引用:
用着中动态的查询的话,是不能多表关联的!建议用hql吧!

用hql怎么写条件呢
from ProjectBD p left join p.bidCompany b where xmguid=? order by subtime
这个b.xxx这个条件怎么加上去?(加到on后面而不是where后面)
[其他解释]
引用:
直接where ,,,还有and 啊。。
from ProjectBD p left join p.bidCompany b where xmguid=? and b.xxxxx=? order by subtime 不行吗?

这样不行的,加到where后面会影响返回的结果
这问题自己解决了,解决方法就是加filter
<set name="bdBidCompany" cascade="all" inverse="true" sort="natural">
<key column="XMGUID" />
<one-to-many class="procurement.bean.BDBidCompany" />
<filter name="ifzhongbiaoFilter" condition="ifzhongbiao=:ifzhongbiao"/>
</set>
<filter-def name="ifzhongbiaoFilter">
<filter-param name="ifzhongbiao" type="integer"/>
</filter-def>

然后代码中这样

Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession();
session.enableFilter("ifzhongbiaoFilter").setParameter("ifzhongbiao", 1);
[其他解释]

<set name="bdBidCompany" cascade="all" inverse="true" sort="natural">
<key column="XMGUID" />
<one-to-many class="procurement.bean.BDBidCompany" />
<filter name="ifzhongbiaoFilter" condition="ifzhongbiao=:ifzhongbiao"/>
</set>
<filter-def name="ifzhongbiaoFilter">
<filter-param name="ifzhongbiao" type="integer"/>
</filter-def>


Session session=this.getHibernateTemplate().getSessionFactory().getCurrentSession(); 
session.enableFilter("ifzhongbiaoFilter").setParameter("ifzhongbiao", 1);

------其他解决方案--------------------


LZ威武,学习了。
hibernate最近2年都没用过了。

读书人网 >J2EE开发

热点推荐