我想在我的域/实体对象中做这样的事情:
@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
这样在我的服务层我可以这样做:
Query query = session.getNamedQuery("favouriteCats")
query.setParameter(0, MyUser);
return query.list();
但是,我在 HQL 中的语法不正确 - 在查看官方文档十分钟后,我决定放弃并在这里询问......?
我的 usercat 表是这样连接的:
@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name="cat_fk", insertable=false, updatable=false)
private cat
sql 是这样的,它在我的 db 命令提示符下运行良好:
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
是我个人的问题,还是 hibernate 文档相当痛苦,您是否经常想知道,编写普通的 jdbc 准备好的语句来填充您的 pojos/domain 对象/dto 是否会更快?
我认为这可能对你有用,但我猜你的 Usercat 类在这里:
select c from Usercat as uc inner join uc.cat as c where uc.isFavourtie = true and uc.user = :user
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)