小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Hibernate入門之Set與Map的排序

 WindySky 2007-07-15
Set與Map的排序
在查詢對(duì)象的Set或Map成員時(shí),您可以對(duì)其進(jìn)行排序,排序可以在兩個(gè)層次進(jìn)行,一個(gè)是在Java執(zhí)行環(huán)境中進(jìn)行,一個(gè)是利用數(shù)據(jù)庫(kù)本身的排序功能。
如果要在Java執(zhí)行環(huán)境中進(jìn)行排序,可以映像文件中設(shè)定sort屬性,例如若為Set,則如下設(shè)定:
<set name="addrs" table="ADDRS" sort="natural">
<key column="USER_ID"/>
<element type="string" column="ADDRESS" not-null="true"/>
</set>
藉由指定sort為natural,Hibernate在加載數(shù)據(jù)庫(kù)的數(shù)據(jù)時(shí),將使用java.util.SortedSet型態(tài)對(duì)象,如果是String,則根據(jù)compareTo()方法來進(jìn)行排序,上面的設(shè)定將會(huì)根據(jù)FILENAME進(jìn)行排序。
如果是Map的話,則如下設(shè)定:
<map name="files" table="FILES" sort="natural">
<key column="USER_ID"/>
<index column="DESCRIPTION" type="string"/>
<element type="string" column="FILENAME" not-null="true"/>
</map>
上面的設(shè)定將使用java.util.SortedTree,根據(jù)DESCRIPTION進(jìn)行排序,sort除了設(shè)定natural之外,也可以指定一個(gè)實(shí)現(xiàn)java.util.Comparator的類別名稱。
以上的說明都是在查詢數(shù)據(jù)時(shí)使用,User類別的屬性成員撰寫時(shí)可以是Map或Set型態(tài),注意當(dāng)設(shè)定sort="natural",并想要進(jìn)行數(shù)據(jù)儲(chǔ)存時(shí),User類別的屬性成員也必須更改為SortedMap或SortedSet型態(tài),例如java.util.TreeMap或 java.util.TreeSet,否則會(huì)發(fā)生ClassCastException。
如果是利用數(shù)據(jù)庫(kù)本身的排序功能,則使用order-by設(shè)定排序的方式,Hibernate會(huì)使用SQL語句在數(shù)據(jù)庫(kù)中進(jìn)行排序,例如在Set中是這么設(shè)定的:
<set name="addrs" table="ADDRS" order-by="ADDRESS desc">
<key column="USER_ID"/>
<element type="string" column="ADDRESS" not-null="true"/>
</set>
在Map中也是相同的設(shè)定方式,您也可以利用數(shù)據(jù)庫(kù)中的函式功能,例如:
<map name="files" table="FILES" order-by="lower(FILENAME)">
<key column="USER_ID"/>
<index column="DESCRIPTION" type="string"/>
<element type="string" column="FILENAME" not-null="true"/>
</map>
使用這個(gè)方法進(jìn)行排序時(shí),Hibernate會(huì)使用LinkedHashSet或LinkedHashMap實(shí)現(xiàn)查詢時(shí)的排序,所以這個(gè)方法僅適用于JDK 1.4或以上的版本。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約