基于JPA查詢部分字段的相關事項
JPA查詢部分字段相關事項
JPA使用HQL查詢部分字段出錯
org.hibernate.hql.internal.ast.QuerySyntaxException: XXX is not mapped
解決
應該@Entity指定name名,name值為對應表名,同@Table的name值相同
使用HQL的注意
1.想要使用JPA查詢部分信息,需要使用HQL
2.select需跟實體,可以是map(必須是小寫,大寫試了下報錯),或者是將待查詢的字段單獨封裝成一個實體,new 實體
3.查詢的字段中需要指定as別名,否則得到的map結(jié)果集中,key值默認是"0",“1”,“2”…數(shù)字
JPA中自定義查詢語句一定要注意這些
JPA的原生語句如何支持where a=X and b>x,未找到。
于是自定義,由于JPA底層是hibernate,所以需要HQL語句。
真尼瑪坑,sql語句為了所謂的面向?qū)ο?,整個HQL語句,簡直就是典型的強行面向?qū)ο蟆?/p>
所以,你不得不如此:select u from Table u where u.x=x and u.y>y
每次寫這個最常忘記的是第二個u,完全反人類的語法。
而且JPA解析的時候,Table必須大寫開頭。
這個估計是先要JPA解析成HQL語句,再執(zhí)行。
至于為啥要大寫開頭,可能是由于JPA的規(guī)定吧。
JPA會把TableEnt對應到table_ent這張表,為什么寫成tableEnt就要報錯。太不人性化。
補充
CTM,JPA查詢語句中把元素開頭寫成了小寫。
findByStatusAndTimeMilliLessThan寫成了findByStatusAnd**t**imeMilliLessThan
這還是看到之前寫的附帶between的查詢才想起來
然between可以混著寫,那less和greater應該也行
也是被JPA的語法坑過幾次,才會對JPA這么沒信心。
比如:findFirst必須寫成findFirstBy
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java 中的 BufferedWriter 介紹_動力節(jié)點Java學院整理
BufferedWriter 是緩沖字符輸出流。它繼承于Writer。接下來通過本文給大家分享Java 中的 BufferedWriter知識,需要的朋友參考下吧2017-05-05SpringBoot整合Caffeine實現(xiàn)本地緩存的實踐分享
緩存是提升系統(tǒng)性能的一個不可或缺的工具,通過緩存可以避免大部分重復的請求到數(shù)據(jù)庫層,減少IO鏈接次數(shù),提升整體的響應速率,本地緩存中比較常見的比如 Caffeine 緩存,這篇文章將結(jié)合具體的 Springboot 項目搭配 Caffeine 實現(xiàn)本地緩存的各種使用方式2024-07-07Java如何利用return結(jié)束方法調(diào)用
這篇文章主要介紹了Java如何利用return結(jié)束方法調(diào)用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02復雜JSON字符串轉(zhuǎn)換為Java嵌套對象的實現(xiàn)
這篇文章主要介紹了復雜JSON字符串轉(zhuǎn)換為Java嵌套對象的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09