我想用Hibernate标准API进行查询。它看起来很简单,但我无法得到它的工作。 我有两张桌子。人和角色。人有一套角色。角色没有任何对Person的引用。 (即用户A可以是管理员,用户,另一个用户B可以只是管理员等等) 我只是想搜索每个做某个角色的人。即 如果我选择管理员,我得到了A和B 如果我选择用户,我只得到A.带2个表的Hibernate搜索API
我真的通过互联网看,但没有发现类似的东西。有人能请我指出正确的方向吗?
我想用Hibernate标准API进行查询。它看起来很简单,但我无法得到它的工作。 我有两张桌子。人和角色。人有一套角色。角色没有任何对Person的引用。 (即用户A可以是管理员,用户,另一个用户B可以只是管理员等等) 我只是想搜索每个做某个角色的人。即 如果我选择管理员,我得到了A和B 如果我选择用户,我只得到A.带2个表的Hibernate搜索API
我真的通过互联网看,但没有发现类似的东西。有人能请我指出正确的方向吗?
编辑:
从here
采取设想一个在线商店主要销售衬衫的情况。每个衬衫模型都有一定数量的可用尺寸。希望查询到超过40 HQL找到所有尺寸的衬衫款式,查询可能如下:
from Shirt shirt
join shirt.availableSizes size
where size.number > 40
使用标准的API,使用个createCriteria()创建之间的内部连接两个表,如在下面的例子:
session.createCriteria(Shirt.class)
.createCriteria( “availableSizes”)
。新增(Expression.gt( “号码”,新的整数(40) ))
.list();
在你的情况下,语法应该是这样的:
session.CreateCriteria<User>
.CreateCriteria("Roles")
.Add(Expression.Eq("Id", your_role_id)
.List<User>(); (oooops, NHibernate syntax...)
其他办法做到这一点是添加用户的列表,每个角色(延迟连接,让你不”在别处没有任何性能问题),并从那里获得你的用户组。
谢谢达尼尔! 我在发帖后不停地搜索并解决了我的问题
DetachedCriteria dc = new DetachedCriteria.forClass(User.class); dc.createCriteria(“authorities”,“code”).add(Restrictions.eq(“code”,“ROLE_ADMINISTRATOR”));
它看起来类似于你提供的。再次感谢!