hibernate 原生sql返回結果執行AddEntity方法


參看博文:http://blog.csdn.net/forandever/article/details/4520787

                    http://blog.csdn.net/yangfanend/article/details/7165086

總結:

 

1、使用Hibernate 原生SQL查詢,當多個表的關聯時,或者返回多個表的字段時,最好要添加別名,並注意添加的別名的寫法;

3、當多個表格關聯使用原生SQL查詢時,記得對每個要返回的實體 addEntity。

4、如果要執行的sql語句是多表查詢,並且是返回一個對象。這個對象是配置hibernate映射的。



執行addEntity, 原生sql必須用select distinct main.*, task.*,link.* from  complaintmain main, complainttask task, complaintlink link的形式,或者select {main.*},{task.*} from  complaintmain main, complainttask task, complaintlink link 

返回幾個表.*,添加幾個與之對應的對象實體。

1.如果查詢的結果task.*和對象字段名稱沒有一一對應,則需要需要起別名,然后通過addEntity("別名",對象實體.class),通過addEntity把要返回的數據強轉為配置hibernate映射的對象實體。

main.id as {main.id},這是為了如果數據庫字段名和complaintmain 模型中不一樣所以都as取了個別名,那么這樣就能返回complaintmain 對象了。

1、hibernate 中createQuery與createSQLQuery兩者區別是:
前者用的hql語句進行查詢,后者可以用sql語句查詢
前者以hibernate生成的Bean為對象裝入list返回,后者則是以對象數組進行存儲
所以使用createSQLQuery有時候也想以hibernate生成的Bean為對象裝入list返回,就不是很方便
突然發現createSQLQuery有這樣一個方法可以直接轉換對象
Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);
XXXXXXX 代表以hibernate生成的Bean的對象,也就是數據表映射出的Bean。但是這個bean必須有映射
呵呵以后多注意,還是時不時的要看看hibernate各個對象方法的使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM