溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用JPA查詢部分字段

發(fā)布時(shí)間:2021-08-27 13:34:09 來源:億速云 閱讀:227 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“如何使用JPA查詢部分字段”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用JPA查詢部分字段”這篇文章吧。

JPA使用HQL查詢部分字段出錯(cuò)

org.hibernate.hql.internal.ast.QuerySyntaxException: XXX is not mapped

解決

應(yīng)該@Entity指定name名,name值為對(duì)應(yīng)表名,同@Table的name值相同

使用HQL的注意

1.想要使用JPA查詢部分信息,需要使用HQL

2.select需跟實(shí)體,可以是map(必須是小寫,大寫試了下報(bào)錯(cuò)),或者是將待查詢的字段單獨(dú)封裝成一個(gè)實(shí)體,new 實(shí)體

3.查詢的字段中需要指定as別名,否則得到的map結(jié)果集中,key值默認(rèn)是"0",“1”,“2”…數(shù)字

JPA中自定義查詢語句一定要注意這些

JPA的原生語句如何支持where a=X and b>x,未找到。

于是自定義,由于JPA底層是hibernate,所以需要HQL語句。

真尼瑪坑,sql語句為了所謂的面向?qū)ο?,整個(gè)HQL語句,簡(jiǎn)直就是典型的強(qiáng)行面向?qū)ο蟆?/p>

所以,你不得不如此:select u from Table u where u.x=x and u.y>y

每次寫這個(gè)最常忘記的是第二個(gè)u,完全反人類的語法。

而且JPA解析的時(shí)候,Table必須大寫開頭。

這個(gè)估計(jì)是先要JPA解析成HQL語句,再執(zhí)行。

至于為啥要大寫開頭,可能是由于JPA的規(guī)定吧。

JPA會(huì)把TableEnt對(duì)應(yīng)到table_ent這張表,為什么寫成tableEnt就要報(bào)錯(cuò)。太不人性化。

補(bǔ)充

CTM,JPA查詢語句中把元素開頭寫成了小寫。

findByStatusAndTimeMilliLessThan寫成了findByStatusAnd**t**imeMilliLessThan

這還是看到之前寫的附帶between的查詢才想起來

然between可以混著寫,那less和greater應(yīng)該也行

也是被JPA的語法坑過幾次,才會(huì)對(duì)JPA這么沒信心。

比如:findFirst必須寫成findFirstBy

以上是“如何使用JPA查詢部分字段”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jpa
AI