用户表userdb
用户权限表popedom
权限列表treeuserdb.hbm.xml:
        <set name="popedoms" inverse="true" lazy="false">
            <key>
                <column name="userid" not-null="true" />
            </key>
            <one-to-many class="com.zjm.study.vo.Popedom" />
        </set>popedom.hbm.xml:
        <many-to-one name="userdb" class="com.zjm.study.vo.Userdb" fetch="select">
            <column name="userid" not-null="true" />
        </many-to-one>
        <many-to-one name="tree" class="com.zjm.study.vo.Tree" lazy="false" fetch="select">
            <column name="childID" not-null="true" />
        </many-to-one>tree.hbm.xml:
        <set name="popedoms" inverse="true">
            <key>
                <column name="childID" not-null="true" />
            </key>
            <one-to-many class="com.zjm.study.vo.Popedom" />
        </set>查出用户时,就要得到他的权限(tree),上面的配置可以得到,但是如何排序呢?对取出来的tree排序
order-by要加在哪里?

解决方案 »

  1.   

    总觉得你做的映射有问题,tree这个貌似没必要要把(个人意见哈)
    如果对你的权限进行排序的话 order-by加在userdb.hbm.xml中就可以了
      

  2.   


    tree表,存储着所有权限,表结构:
    create table tree
    (
        int id,
        varchar text
    )id1,权限1
    id2,权限2
    id3,权限3
    popedom表是用户拥有的权限
    create table popedom
    (
        int userid,//关联用户表id
        int childid//关联tree表id
    )
      

  3.   

      根据用户Id将用户权限加载到一个List中,实现客户化排序即可。
      
      

  4.   

    使用Set其实不建议在配置文件排序。建议使用HQL,可以使用join语句,查询结果后再进行order by
      

  5.   

    用的是Set做的映射,用order by其实没啥用,并不能保证你取出结果的时候是有序的。对Set排序要设定sort属性,这样取出来的Set实际上底下实现是TreeSet,这个东西才是顺序保证的。