freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

jpa開發(fā)文檔-資料下載頁

2025-08-08 23:30本頁面
  

【正文】 知道結(jié)果是單個,我們可以用getSingleResult()獲得結(jié)果 final Object result = ()。 // 由于Order中id的類型為long, final Long max = (Long)result。 // 在一些數(shù)據(jù)庫中max函數(shù)返回的結(jié)果的類型不一定于id對應(yīng)的列的類型相符,更安全的方式可以采用string來轉(zhuǎn)型 fina long max = ( () )。 聚合函數(shù)也可以作為被查詢的一個屬性返回。 // 返回所有的訂單的生產(chǎn)廠商和他們的訂單價值總額 final Query query = ( select , sum() FROM Order o group by )。)。 和SQL一樣,如果聚合函數(shù)不是select...from的唯一一個返回列,需要使用GROUP BY語句。GROUP BY應(yīng)該包含select語句中除了聚合函數(shù)外的所有屬性。 // 返回所有的訂單的生產(chǎn)廠商的的名字,貨物號碼和每種貨物的訂單價值總額 // 注意group final Query query = ( select , , sum() FROM Order o group by ,)。 如果還需要加上查詢條件,需要使用HAVING條件語句而不是WHERE語句。 // 返回所有的訂單的生產(chǎn)廠商是foo的貨物號碼和每種貨物的訂單價值總額 // 這里having = 39。foo39。為條件 final Query query = ( select , , sum() FROM Order o  group by , having =39。foo39。)。 在HAVING語句里可以跟WHERE語句一樣使用參數(shù)。 // 返回所有的訂單的生產(chǎn)廠商是foo的貨物號碼和每種貨物的訂單價值總額 // 這里having = 39。foo39。為條件 final Query query = ( select , , sum() FROM Order o  group by , having =?1)。 ( 1, foo )。 final List result = ()。 關(guān)聯(lián)(join)在JPQL中,大部分的情況下,使用對象屬性都隱含了關(guān)聯(lián)(join)。例如在以下查詢中: final Query query = ( select o from Order o where =2000 order by )。 當(dāng)這個句JPQL編譯成以下的SQL時就會自動包含了關(guān)聯(lián),JPQL編譯成SQL時關(guān)聯(lián)默認取左關(guān)聯(lián)(left join)。 select , , , , , from orderTable as o left join addressTable where = 2000 但在一些情況下,我們?nèi)匀恍枰獙﹃P(guān)聯(lián)做精確的控制。因此JPQL仍然支持和SQL中類似的關(guān)聯(lián)語法: left out join/left join inner join left join/inner join fetch left join, left out join等義,都是允許符合條件的右邊表達式中的Entiies為空。 // 返回所有地址為2000的Order紀錄,不管Order中是否有OrderItem final Query query = ( select o from Order o left join where =2000 order by )。 由于JPQL默認采用left join。這樣的查詢和以下的JPQL其實是等價的。 // 返回所有地址為2000的Order紀錄,不管Order中是否有OrderItem final Query query = ( select o from Order o where =2000 order by )。 需要顯式使用left join/left outer join的情況會比較少。inner join要求右邊的表達式必須返回Entities。 // 返回所有地址為2000的Order紀錄,Order中必須有OrderItem final Query query = ( select o from Order o inner join where =2000 order by )。 left/left out/inner join fetch提供了一種靈活的查詢加載方式來提高查詢的性能。在默認查詢中,Entity中的集合屬性默認不會被關(guān)聯(lián),集合屬性默認是緩加載( lazyload )。 // 默認JPQL編譯后不關(guān)聯(lián)集合屬性變量(orderItems)對應(yīng)的表 final Query query = ( select o from Order o inner join where =2000 order by )。 final List result = ()。 // 這時獲得Order實體中orderItems( 集合屬性變量 )為空 final Order order = (Order)( 0 ) // 當(dāng)應(yīng)用需要時,EJB3 Runtime才會執(zhí)行一條SQL語句來加載屬于當(dāng)前Order的OrderItems Collection orderItems = ()。 這樣的查詢性能上有不足的地方。為了查詢N個Order,我們需要一條SQL語句獲得所有的Order的原始/對象屬性, 但需要另外N條語句獲得每個Order的orderItems集合屬性。為了避免N+1的性能問題,我們可以利用join fetch一次過用一條SQL語句把Order的所有信息查詢出來。 // 返回所有地址為2000的Order紀錄,Order中必須有OrderItem final Query query = ( select o from Order o inner join fetch where =2000 order by )。由于使用了fetch,這個查詢只會產(chǎn)生一條SQL語句,比原來需要N+1條SQL語句在性能上有了極大的提升。在查詢中使用參數(shù)查詢時,參數(shù)類型除了String, 原始數(shù)據(jù)類型( int, double等)和它們的對象類型( Integer, Double等),也可以是Entity的實例。 final Query query = ( select o from Order o where = ?1 order by )。 final Address address = new Address( 2001, foo street, foo city, foo province )。 // 直接把address對象作為參數(shù)。 ( 1, address )。 批量更新(Batch Update)JPQL支持批量更新。 Query query = (update Order as o set =:newvender, =39。fooPart39。 where = 39。foo39。)。 (newvender, barVender)。 // update的記錄數(shù) int result = ()。 (Batch Remove)JPQL支持批量刪除。 Query query = (DELETE FROM Order)。 int result = ()。 Query query = (DELETE FROM Order AS o WHERE =39。redsoft39。)。 int result = ()。
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1