摘要:使用的在使用方法時,這個方法進行了重載,我經(jīng)常使用的兩個方法分別為這兩個方法的區(qū)別是第二個方法查詢之后可以強轉(zhuǎn)為相應(yīng)的類傳入的例如而如果使用第一個方法,將無法強轉(zhuǎn),這時候查詢得到的數(shù)據(jù)為的,例如注其實這個查詢可以通過配置映射關(guān)系簡化第二個問
使用EntityManager的createNativeQuery
在使用createNativeQuery方法時,這個方法進行了重載,我經(jīng)常使用的兩個方法分別為
createNativeQuery(String sql)
createNativeQuery(String sql,Class
這兩個方法的區(qū)別是第二個方法查詢之后可以強轉(zhuǎn)為相應(yīng)的類(傳入的class),例如:
Query query = em.createNativeQuery("select * from trainingclass where id in (select distinct classid from classunsubscribe where traineeId=""+traineeId+"")" ,TrainingClass.class); Listclasses = query.getResultList();
而如果使用第一個方法,將無法強轉(zhuǎn),這時候查詢得到的數(shù)據(jù)為object[]的list,例如:
Query query = em.createNativeQuery( "select t.*,c.date reserveDate,c.isLearned from trainingclass t, classreserve c where t.id=c.classid AND t.id in" + "(select distinct classid from classreserve c1 where c1.traineeId=""+traineeId+"")"); List classes = query.getResultList(); Listresults = new ArrayList<>(classes.size()); for (int i = 0; i < classes.size(); i++) { Object[] obj = (Object[]) classes.get(i); ReserveStatistics temp = new ReserveStatistics((int)obj[0],String.valueOf(obj[1]), String.valueOf(obj[2]),String.valueOf(obj[3]),String.valueOf(obj[4]), (double)obj[5],String.valueOf(obj[6]),String.valueOf(obj[8]),(int)obj[9]); results.add(temp); } return results;
(注:其實這個查詢可以通過配置映射關(guān)系簡化)
第二個問題在使用原生的sql語句進行查詢時,如果查詢語句設(shè)計多張表,而多張表又有取名相同的字段,則需要為相同的字段取一個別名,如
select t.*,c.date reserveDate,c.isLearned from trainingclass t, classreserve c
這邊因為trainingclass表中有屬性和classreserve 表中有一個取名相同的字段date,所以需要給其中一個“重命名”,否則會出現(xiàn)
org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasException錯誤
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66775.html
摘要:正文公司使用的是現(xiàn)在流行的,數(shù)據(jù)庫方面使用的是。這幾天用的最多的就是用進行查詢了,簡單的查詢很簡單,網(wǎng)上查一查就有一堆方案,直到遇到分頁查詢的時候出了問題。 寫作原因 之前在學(xué)校都是做前端,但是最后找了個Java后端的工作,框架什么的基本沒用過,所以工作中遇到了很多問題,所以決定記錄下來工作中遇到的問題,記錄成長的點滴。 正文 公司使用的是現(xiàn)在流行的SpringBoot,數(shù)據(jù)庫方面使用...
摘要:所以悲觀鎖是限制其他線程,而樂觀鎖是限制自己,雖然他的名字有鎖,但是實際上不算上鎖,只是在最后操作的時候再判斷具體怎么操作。悲觀鎖和樂觀鎖比較悲觀鎖適合寫多讀少的場景。 最近在公司的業(yè)務(wù)上遇到了并發(fā)的問題,并且還是很常見的并發(fā)問題,算是低級的失誤了。由于公司業(yè)務(wù)相對比較復(fù)雜且不適合公開,在此用一個很常見的業(yè)務(wù)來還原一下場景,同時介紹悲觀鎖和樂觀鎖是如何解決這類并發(fā)問題的。 公司業(yè)務(wù)就是...
摘要:我將舉幾個栗子,來詳細(xì)的說一下我自己在使用多表復(fù)雜查詢的場景和想法。名字手機號這是一個單表的多條件復(fù)雜查詢,由于是在幾個屬性中進行篩選,其中的屬性的個數(shù)不知道有多少個,所以只需要利用查詢就可以很方便的實現(xiàn)這個需求。 最近工作中由于要求只能用hibernate+jpa 與數(shù)據(jù)庫進行交互,在簡單查詢中,jpa繼承CrudRepository接口 ,然后利用jpa的方法命名規(guī)范進行jpql查...
閱讀 2440·2019-08-29 13:53
閱讀 2518·2019-08-29 11:32
閱讀 3060·2019-08-28 17:51
閱讀 3810·2019-08-26 10:45
閱讀 3529·2019-08-23 17:51
閱讀 2993·2019-08-23 16:56
閱讀 3345·2019-08-23 16:25
閱讀 3100·2019-08-23 14:15