hibernate通過映射文件過濾查詢字段

近期接觸一個項目往湿,實體和數(shù)據(jù)庫的關(guān)系是通過*.hbm.xml 文件進(jìn)行關(guān)系映射的妖异。由于一個接口進(jìn)行查詢的時候,查詢出了一個表的clob字段领追,導(dǎo)致查詢速度十分慢他膳,因此考慮不需要用到這個字段時候,不查詢這個clob绒窑。

目前有一個A實體棕孙,A.hbm.xml內(nèi)容為:A.a、A.b、A.c蟀俊,其中A.c為一個Set<C>,C為另外一個實體钦铺,clob字段就在C里面,C.hbm.xml 內(nèi)容為:C.a肢预、C.b(clob)矛洞。

查詢HQL="from A";

通過執(zhí)行這個HQL會得到一個List<A>。

使用場景是有時需要 查詢出C.b 有時又不需要烫映。

為解決以上問題沼本,有兩種解決方案:

1、使用select 語句進(jìn)行自定查詢

當(dāng)不需要查詢出C.b的時候可以將HQL語句改為以下幾種:

1)select A.a,A.b,A.c.a from A

結(jié)果list中锭沟,每條記錄對應(yīng)一個object數(shù)組抽兆,object[]中每個元素為hql語句中列的序號(從0開始)。

2)select new map(A.a,A.b,A.c.a) from A

?? 結(jié)果list中族淮,每條記錄對應(yīng)一個map辫红,map中key為hql語句中的序號,從0開始祝辣,key為字符厉熟,非數(shù)字。

3) select new A(A.a,A.b,A.c.a) from A

?? 結(jié)果list中较幌,每條記錄對應(yīng)一個A實體揍瑟,需要添加相應(yīng)的構(gòu)造方法。

以上查詢只適合結(jié)構(gòu)簡單的實體乍炉,且查詢效率比較低绢片,需要拿到數(shù)據(jù)后自己重新組裝,當(dāng)屬性字段比較多岛琼,結(jié)構(gòu)復(fù)雜時底循,這種寫法根本不現(xiàn)實。

2槐瑞、使用第二套配置文件

當(dāng)實體結(jié)構(gòu)復(fù)雜時可以采用此方法進(jìn)行自定義字段查詢(研究了很久才找出來的)熙涤。

1)copy 類A和A.hbm.xml類C 分別命名為 :A2和C2(當(dāng)然你也可以用其他命名);

?? copy A.hbm.xml和C.hbm.xml配置文件 分別名為:A2.hbm.xml和C2.hbm.xml困檩。

?2)將A2中的c屬性(set<C>)改為set<C2>祠挫,A2.hbm.xml中的映射實體改為A2,c屬性映射實體改為C2.

3) C2.hbm.xml中的映射實體改為C2,去掉C.b(clob)屬性.

4)修改HQL為 “from A2”.

通過以上步驟,就已經(jīng)實現(xiàn)的對屬性字段自定義查詢悼沿,優(yōu)點是修改簡單等舔,使用簡單,適合復(fù)雜關(guān)系的實體糟趾。

?


?

總結(jié):

本人沒有系統(tǒng)的學(xué)習(xí)過hibernate,對hibernate的各個知識點也不是很了解慌植,如有不對的地方多多見諒甚牲。當(dāng)接觸的項目需要進(jìn)行這樣一個修改的時候,現(xiàn)在網(wǎng)上查找資料蝶柿,嘗試了第一種方法丈钙,但由于實體關(guān)系復(fù)雜,第一種方法怎么都達(dá)不到效果交汤。嘗試很久雏赦,自己琢磨出了第二種方法,很好解決了這個應(yīng)用場景蜻展,缺點也是十分明顯,增加了很多文件邀摆。但能解決問題是第一步纵顾,寫下此文,與大家分享和交流栋盹,如果對你有用施逾,最好不過。

?

需要聯(lián)系交流的可以加我QQ:549562511.

?

?

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末例获,一起剝皮案震驚了整個濱河市汉额,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榨汤,老刑警劉巖蠕搜,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異收壕,居然都是意外死亡妓灌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門蜜宪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虫埂,“玉大人,你說我怎么就攤上這事圃验〉舴” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵澳窑,是天一觀的道長斧散。 經(jīng)常有香客問我,道長摊聋,這世上最難降的妖魔是什么颅湘? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮栗精,結(jié)果婚禮上闯参,老公的妹妹穿的比我還像新娘瞻鹏。我一直安慰自己,他們只是感情好鹿寨,可當(dāng)我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布新博。 她就那樣靜靜地躺著,像睡著了一般脚草。 火紅的嫁衣襯著肌膚如雪赫悄。 梳的紋絲不亂的頭發(fā)上规哲,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天败去,我揣著相機與錄音仆救,去河邊找鬼胰锌。 笑死秃症,一個胖子當(dāng)著我的面吹牛陨献,可吹牛的內(nèi)容都是我干的寸士。 我是一名探鬼主播谜诫,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼慕趴,長吁一口氣:“原來是場噩夢啊……” “哼痪蝇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冕房,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤躏啰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后耙册,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體给僵,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年详拙,在試婚紗的時候發(fā)現(xiàn)自己被綠了想际。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡溪厘,死狀恐怖胡本,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情畸悬,我是刑警寧澤侧甫,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站蹋宦,受9級特大地震影響披粟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冷冗,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一守屉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒿辙,春花似錦拇泛、人聲如沸滨巴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恭取。三九已至,卻和暖如春熄守,著一層夾襖步出監(jiān)牢的瞬間蜈垮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工裕照, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留攒发,地道東北人。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓晋南,卻偏偏與公主長得像惠猿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子搬俊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,815評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法紊扬,類相關(guān)的語法蜒茄,內(nèi)部類的語法唉擂,繼承相關(guān)的語法,異常的語法檀葛,線程的語...
    子非魚_t_閱讀 31,669評論 18 399
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 1,982評論 0 27
  • 本文包括:1玩祟、Hibernate 的查詢方式2、HQL (Hibernate Query Language) 查詢...
    廖少少閱讀 2,666評論 0 15
  • 分割線 引用 代碼 表格 甘特圖 序列圖 graph LR 數(shù)學(xué)公式 鏈接link 圖片 劃線++下劃線++B粗體...
    Albert陳凱閱讀 477評論 0 0