2008-04-29

hibernate高级查询N表多对多问题

关键字: n表, 双向, 多对多
有一用户表.
user :id , userName , password......
有一分组表.
role: id , roleName, ....
有一功能表.
function: id, functionName.. ..

他们是多对多关系.
有两个表做外键
表一
userrelationrole: userid, roleid 放用户权限的多对多映射

表二
permission : roleid,functionid 用于放权限和功能的多对多映射

在hibernate 中是用set,bag来做双向的多对多的..事关..list是不可以做双向的

hibernate代码片段:
<set name="users" table="userrelationrole" lazy="false" inverse="true" cascade="save-update" order-by="userId asc">
<cache usage="read-write"/>
<key column="roleId" />
<many-to-many class="org.ylcompany.rain.hibernate.User" column="userId" outer-join="auto" />
</set>

<set name="functions" table="permission" lazy="false" cascade="save-update" order-by="functionId">
<cache usage="read-write"/>
<key column="roleId" />
<many-to-many class="org.ylcompany.rain.hibernate.Function" column="functionId" />
</set>
hibernate代码片段
这个是role中的hibernate片段
假如当我和道一个userid的时候,我要得到这个用户的功能的时候,
就要
User user = (User)basedao.loadByKey(org.ylcompany.rain.hibernate.User.class,"userName",this.userName);
Set _roles = user.getRoles();
Iterator _it = _roles.iterator();
while(_it.hasNext() ){
Role role = (Role)_it.next();
Set _functions = role.getFunctions();
Function _function = new Function();
Iterator __it = _functions.iterator();
while(__it.hasNext() ){}}
要这样子去迭代..
都要这样子麻烦的去查找功能的吗..这个就是在hibernate中的级联查询吗?

有没方法,当知道userid时,当得到全部的function对象呢.?

还有就是.在hibernate中..的高级查询.用Restrictions来做日期的范围查询是可以..

有没方法直接去得到某月的记录呢..

这个当然我的记录中是有记录的日期时间的.

我对hibernate的高级查询,N表多表多关联不是太懂..请网友们帮手..回复一下.
评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

rain16881
搜索本博客
我的相册
D23a49f4-4346-338c-a90d-991265b62aa4-thumb
1a03e16qc20a0_374238
共 2 张
最近加入圈子
存档
最新评论