日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate实现多变联合查询

發布時間:2023/12/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate实现多变联合查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hibernate主要支持兩種查詢方式:HQL查詢和Criteria查詢。前者應用較為廣發,后者也只是調用封裝好的接口。

現在有一個問題,就是實現多表連接查詢,且查詢結果集不與任何一個實體類對應,怎么解決呢?

舉個例子:

現在有兩個表,一個users用戶表, 一個goods商品表,每個用戶可以有多個商品,而一個商品只能對應一個用戶。

users表中的字段:userId,userName,telephone,address

goods表中的字段:goodsId,goodsName,userId

現在要實現兩表連接查詢,查出每個用戶所擁有的商品,并把該用戶的信息和其商品信息顯示出來。

使用Hibernate反向生成的實體類分別是Users和Goods。

有兩種方式:

(1)使用傳統方式:

String hql="select u.userName, u.telephone, u.address, g.goodsName from Users u, Goods g where u.userId=g.userId";

根據這個查詢語句,調用query.list()方法得到一個List值,這個List中的每一個值都是Object[]類型的,里面包含了查詢出來的所有值,剩下的自個兒去處理就行了

(2)增加一個映射類

增加一個映射類UsersVoGoods.java,添加需要查詢的信息相關的所有屬性,本例中添加userName, telephone, address, goodsName。并為這幾個屬性添加setter和getter方法,增加構造函數,參數與這四個屬性對應,那么可以用hql查詢方式:

String hql = "select new com.test.UsersVoGoods(u.userName, u.teltphone, u.address, g.goodsName) from Users u, Goods g where u.userId=g.userId";

query.list()的返回值List中的值都是UsersVoGoods型的,直接使用get()就能獲取。

其實不增加映射類也是可以的,只需要在Users.java實體類里增加一個構造函數,函數參數還是需要的所有字段,并為這些參數中Users實體原來沒有的字段添加屬性和getter() setter()即可。

總結

以上是生活随笔為你收集整理的hibernate实现多变联合查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。