我想在hql中给额外的参数加上连接条件。在SQL查询中我写
select a.*,ur.fname,ur.lname
from
atom as a
left join user as ur
on
a.id=ur.id
left join album as al
on
a.id=al.aid
and al.name='Profile'
left join post_images as pi
on
a.id=pi.aid
and pi.is_album_cover='yes'
where
(ur.fname like '%n%'
or ur.fname like '%n%')
and a.status='active';
可以正常工作并给出期望的结果。在hql中,我不知道如何通过join给额外的参数来获取我编写的数据(没有额外的参数)
feeds = (List<Atom>) session.createQuery(
"select distinct atom from Atom as atom "
+ "left join fetch atom.albums as album "
+ "left join fetch album.postImageses as coverImage "
+ "left join fetch atom.user as user "
+ "where "
+ "(atom.user.fname like :name "
+ "or atom.user.lname like :name )"
+ "and album.name=:albumName "
+ "and coverImage.isAlbumCover=:isCover "
+ "and atom.status=:status ")
.setParameter("albumName", "Profile")
.setParameter("name", '%' + name + '%')
.setParameter("name", '%' + name + '%')
.setParameter("isCover", "yes")
.setParameter("status", "active")
.setFirstResult(0)
.setMaxResults(30)
.list();
这没有给出任何结果,我怎么能给join附加参数
在HQL中,您可以使用带有关键字的HQL提供额外的加入条件。
Chech协会并加入HQL
试试这个:
您的HQL ::
select distinct atom
from Atom as atom
left join atom.albums as album with album.name= "Profile"
left join atom.postImageses as coverImage with coverImage.isAlbumCover="yes"
left join atom.user as user
where (user.fname like name or user.lname like name) and atom.status="active";
您的代码::
feeds = (List<Atom>) session.createQuery(
"select distinct atom from Atom as atom "
+ "left join atom.albums as album with album.name=:albumName "
+ "left join atom.postImageses as coverImage with coverImage.isAlbumCover=:isCover "
+ "left join atom.user as user "
+ "where (user.fname like :name or user.lname like :name) "
+ "and atom.status=:status ")
.setParameter("albumName", "Profile")
.setParameter("name", '%' + name + '%')
.setParameter("isCover", "yes")
.setParameter("status", "active")
.setFirstResult(0)
.setMaxResults(30)
.list();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句