2010-01-14 49 views
0

我想用Hibernate标准API进行查询。它看起来很简单,但我无法得到它的工作。 我有两张桌子。人和角色。人有一套角色。角色没有任何对Person的引用。 (即用户A可以是管理员,用户,另一个用户B可以只是管理员等等) 我只是想搜索每个做某个角色的人。即 如果我选择管理员,我得到了A和B 如果我选择用户,我只得到A.带2个表的Hibernate搜索API

我真的通过互联网看,但没有发现类似的东西。有人能请我指出正确的方向吗?

回答

1

编辑:

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...) 

其他办法做到这一点是添加用户的列表,每个角色(延迟连接,让你不”在别处没有任何性能问题),并从那里获得你的用户组。

0

谢谢达尼尔! 我在发帖后不停地搜索并解决了我的问题

DetachedCriteria dc = new DetachedCriteria.forClass(User.class); dc.createCriteria(“authorities”,“code”).add(Restrictions.eq(“code”,“ROLE_ADMINISTRATOR”));

它看起来类似于你提供的。再次感谢!