問題:Hibernate的<many-to-many>雙向關(guān)聯(lián)中,一方加載另一方時(shí),怎么樣達(dá)到按自定義規(guī)則排序的目的呢?
實(shí)例:角色和菜單是多對(duì)多的關(guān)系,為角色分配菜單后,加載菜單時(shí),我需要按照菜單的ID來排序顯示。
解決辦法:
1. 通過在hbm配置文件中配置解決,需要自定義比較器。
1) 在多對(duì)多的主控端指定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