论坛首页 入门技术论坛

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

浏览 2209 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-04-29  
有一用户表.
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表多表多关联不是太懂..请网友们帮手..回复一下.
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics