在使用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...