问题:Hibernate的<many-to-many>双向关联中,一方加载另一方时,怎么样达到按自定义规则排序的目的呢?
实例:角色和菜单是多对多的关系,为角色分配菜单后,加载菜单时,我需要按照菜单的ID来排序显示。
解决办法:
1. 通过在hbm配置文件中配置解决,需要自定义比较器。
1) 在多对多的主控端指定sort属性
这里的主控端为role,受控端为menu。
role的配置为:
<set name="roleMenus" table="ROLE_MENU" inverse="false" lazy="false" sort="menu.MenuComparator">
<key column="RM_ROLE_ROLE_ID" />
<many-to-many column="RM_MENU_MENU_ID" class="domain.MenuInfoVO" />
</set>
menu的配置为:
<set name="roleMenus" table="ROLE_MENU">
<key column="RM_MENU_MENU_ID" />
<many-to-many column="RM_ROLE_ROLE_ID" class="domain.RoleInfoVO" />
</set>
2) 自定义MenuComparator