在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全/ spring-data-jpa根據(jù)條件自動限制查詢結(jié)果

spring-data-jpa根據(jù)條件自動限制查詢結(jié)果

這是一個(gè)閑來無事的問題帖,編程的入門小菜鳥遇到的問題,沒有解決思路,不知哪位前輩有思路,還望指點(diǎn)一二。
是這樣的

  1. 項(xiàng)目使用的是spring-data-jpa作為持久層框架,用面向?qū)ο蟮姆绞絹碜x取數(shù)據(jù)庫。
  2. 現(xiàn)在能夠處理一對一、一對多、多對多三種關(guān)系,并把他們最為json數(shù)據(jù)輸出出來。
  3. 當(dāng)我查詢一個(gè)結(jié)構(gòu)較為復(fù)雜的對象的時(shí)候,我會得到這個(gè)對象的所有的和他有關(guān)的屬性比如A類有name,age,password兩個(gè)字段,這時(shí)B類繼承了A類,所以當(dāng)我查詢B類的時(shí)候會把name,age,password全部查詢出來,現(xiàn)在我想只查詢name,age 而不想顯示password怎么實(shí)現(xiàn)呢?我希望的不是把password全部屏蔽掉,而是在本次查詢中把他屏蔽掉,舉個(gè)栗子,如果再有個(gè)C類同時(shí)繼承了A,查詢C的時(shí)候是會把name,age,password全部查詢出來的。、
  4. 同3的表述一樣,但是現(xiàn)在的屬性變成了對象,A類里面有個(gè)對象A1,B2,C3 ,因?yàn)锽類C類繼承了A類,所以當(dāng)我查詢B C的時(shí)候會把B2 C3的所有屬性全部查詢出來,但是想在我想在查詢B類的時(shí)候不顯示C3,在查詢C類的時(shí)候不顯示B,這個(gè)如何做呢?

希望有思路的大神前輩停停腳給小弟指明道路,在此感謝!

回答
編輯回答
荒城

假設(shè)有對象A,里面有屬性name,age,password,對象查詢似乎只能全部查出來,無法查出指定對象,而且查一個(gè)字段和查全部字段性能幾乎無差,個(gè)人認(rèn)為你這是偽需求。

假設(shè)有對象A,B.
A里面有屬性name,age,b,同時(shí)A與B配置了一對多的關(guān)系,默認(rèn)情況下查詢A對象,B對象不會被立即查出,原因是一對多的情況下,FetchType fetch() default LAZY;,如果想B這個(gè)集合也被全部查出來,只需設(shè)置@OneToMany(fetch = FetchType.EAGER);
如果A和B是多對一的關(guān)系,默認(rèn)查詢A對象,B對象也會被查詢出來,只需要設(shè)置@ManyToOne(fetch = FetchType.LAZY),B對象就會被立即查詢。你可以設(shè)置完設(shè)計(jì)好日志看控制臺打印的sql語句測試一下。

2018年1月8日 00:45