使用JPA查詢資料庫遇到的兩個問題

2021-09-17 04:31:58 字數 1240 閱讀 8116

在使用createnativequery方法時,這個方法進行了過載,我經常使用的兩個方法分別為

這兩個方法的區別是第二個方法查詢之後可以強轉為相應的類(傳入的class),例如:

query query = em.createnativequery("select * from trainingclass 

where id in (select distinct classid from classunsubscribe where traineeid='"+traineeid+"')"

,trainingclass.class);

listclasses = query.getresultlist();

而如果使用第乙個方法,將無法強轉,這時候查詢得到的資料為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++)

return results;

(注:其實這個查詢可以通過配置對映關係簡化)

在使用原生的sql語句進行查詢時,如果查詢語句設計多張表,而多張表又有取名相同的字段,則需要為相同的字段取乙個別名,如

select t.*,c.date reservedate,c.islearned from trainingclass t, classreserve c
這邊因為trainingclass表中有屬性和classreserve 表中有乙個取名相同的字段date,所以需要給其中乙個「重新命名」,否則會出現

org.hibernate.loader.custom.nonuniquediscoveredsqlalia***ception錯誤

資料庫中查詢兩個日期之間的資料

從資料庫中查詢時間在兩個日期之間的記錄,例如 查詢建立時間在2014 11 06到2014 11 13之間的記錄!select from t entry deliver info where modify tm 2014 10 13 andmodify tm 2014 11 14 語句報錯 sql錯...

兩個庫同步更新資料庫

我做的是2個資料庫的乙個備份同步更新,因為備份資料庫有字段的冗餘增加,所以不能完全bulkcopy這樣的同步,需要進行乙個修改再同步更新,具體修改 不展示出來了,下面貼更新 開始的時候,使用如下 進行更新 using var conn new sqlconnection fromconn int u...

hibernate鏈結兩個資料庫查詢

hibernate可鏈結兩個不同的資料庫,可以都是mysql或者乙個mysql乙個sql seiver等 具體如下 一 在src下 寫兩個hibernate.cfg.xml檔案 如 hbn mysql.cfg.xml和hbn sqlserver.cfg.xml 二 分別解析上面的兩個.cfg.xml...