使用内部联接的简单hql命名查询 [英] Simple hql named query that uses a inner join

查看:102
本文介绍了使用内部联接的简单hql命名查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  @Entity 
@NamedQueries( {
@NamedQuery(name =favouriteCats,query =from Cat c内部加入UserCat uc,其中uc.isFavourtie = true和uc.user =:user)
})
public final class Cat扩展BaseTable

因此,在我的服务层中,我可以这样做:

 查询查询= session.getNamedQuery(favouriteCats)
query.setParameter(0,MyUser);
返回query.list();

然而,我在HQL中的语法是不正确的 - 在下午十分钟看到官方文档,我决定放弃并问这里...?
我的usercat表被加入,如下所示:

$ $ p $ $ $ c $ @ @ManyToOne(cascade = CascadeType.MERGE)
@ JoinColumn(name =cat_fk,insertable = false,updatable = false)
私人猫

sql是这样的,它在我的db命令提示符下工作正常:

  select c。* 
from cat as内部加入usercat作为uc on c.id = uc.cat_fk
和uc.isFavourite = 1 //位域
和uc.user_fk = 74 //只是用户标识

它只是我还是hibernate文档而非常痛苦,您是否经常想知道它是否会只要写正常的jdbc预处理语句来填充你的pojos / domain对象/ dto的...?

解决方案

这可能适用于你,但我在这里猜你的Usercat类:

 从Usercat中选择c作为uc inner join uc.cat作为c其中uc.isFavourtie = true和uc.user =:使用r 


I want to do something like this in my domain/entity object :

@Entity
@NamedQueries({
@NamedQuery(name="favouriteCats", query="from Cat c inner join on UserCat uc where uc.isFavourtie = true and uc.user = :user")
})
public final class Cat extends BaseTable

So that in my service layer I can do this :

Query query = session.getNamedQuery("favouriteCats")
query.setParameter(0, MyUser);
return query.list();

However, my syntax in HQL is incorrect - and aftern ten minutes looking at official docs I have decided to give up and ask here ... ? My usercat table is joined like so :

@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="cat_fk", insertable=false, updatable=false)
private cat

The sql is this, it works fine at my db command prompt:

select c.* 
from cat as c inner join usercat as uc on c.id = uc.cat_fk 
and uc.isFavourite = 1 //bit field
and uc.user_fk = 74 //just user id

Is it just me or is the hibernate documentation rather painful, and do you find yourself often wondering whether it would be quicker just to write normal jdbc prepared statements to populate your pojos/domain objects/dto's... ?

解决方案

I think this might work for you, but I am guessing your Usercat class here:

select c from Usercat as uc inner join uc.cat as c where uc.isFavourtie = true and uc.user = :user

这篇关于使用内部联接的简单hql命名查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆