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()即可。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456733.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PyCharm光標變粗的解決辦法

pycharm中光標變粗,如下: 此時變成了改寫模式,只需要按下鍵盤的insert鍵即可 轉載于:https://www.cnblogs.com/uglyliu/p/6159839.html

SparkRDD常用算子實踐(附運行效果圖)

目錄1、簡單算子說明2、復雜算子說明 目錄 SparkRDD算子分為兩類:Transformation與Action. Transformation:即延遲加載數據,Transformation會記錄元數據信息,當計算任務觸發Action時,才會真正開始計算。 Action&am…

six庫是什么

Utilities for writing code that runs on Python 2 and 3”“” 它是一個專門用來兼容 Python 2 和 Python 3 的庫。它解決了諸如 urllib 的部分方法不兼容, str 和 bytes 類型不兼容等“知名”問題。

Kali-linux使用Nessus

Nessus號稱是世界上最流行的漏洞掃描程序,全世界有超過75000個組織在使用它。該工具提供完整的電腦漏洞掃描服務,并隨時更新其漏洞數據庫。Nessus不同于傳統的漏洞掃描軟件,Nessus可同時在本機或遠端上遙控,進行系統的漏洞分析掃描…

HDFS讀寫數據的原理

目錄1 概述2 HDFS寫數據流程3 HDFS讀數據流程 目錄 最近由于要準備面試,就把之前學過的東西好好整理下,權當是復習。 下面說下HDFS讀寫數據的原理。 1 概述 HDFS集群分為兩大角色:NameNode、DataNode NameNode負責管理整個文件系統的元數…

理解列存儲索引

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。 優點和使用場景 SQL Server 內存中列存儲索引通過使用基于列的數據存儲和基于列的查詢處理來存儲和管理數據。 列存儲索引適合于主要執行大容量加載和只讀查詢的數據倉庫工作負荷…

Django項目部署到阿里云服務器上無法發送郵件STMP

部署好項目之后發送郵件無法發送,多方查閱之后,解決問題。 阿里云服務器禁用了25端口,導致無法發送郵件。 25端口申請開放的難度很大,直接放棄。 解決: 在 django項目的 settings.py文件中x修改port端口 。

美國誠實簽經驗——IMG全球醫療險,TODO

那么,誠實簽最關鍵的4個要點 是什么呢? 第一,證明你有一定的經濟實力。 可能需要房產、存款等證明,也需要銀行信用卡或借記卡半年流水證明(讓人信服的每月進帳和消費能力)。 這些是為了證明,你可…

大數據開發初學者學習路線

目錄前言導讀:第一章:初識Hadoop第二章:更高效的WordCount第三章:把別處的數據搞到Hadoop上第四章:把Hadoop上的數據搞到別處去第五章:快一點吧,我的SQL第六章:一夫多妻制第七章&…

Python的虛擬環境配置(pyenv+virtualenv)

一、為什么需要配置虛擬環境 Python 2和Python 3之間存在著較大的差異,并且,由于各種原因導致了Python 2和Python 3的長期共存。在實際工作過程中,我們可能會同時用到Python 2和Python 3,因此,也需要經常在Python 2和P…

安卓屏幕適配問題

屏幕適配是根據屏幕密度,dpi為單位的,而不是分辨率。 手機會根據不同手機的密度,自己去不同資源目錄下去找對應的資源 比如:   每個圖片目錄下的圖片資源都是一樣的,只是大小不一樣   比如drawable-sw800dp-mdpi目錄&#xff…

MapReduce原理全剖析

MapReduce剖析圖 如上圖所示是MR的運行詳細過程 首先mapTask讀文件是通過InputFormat(內部是調RecordReader()–>read())來一次讀一行,返回K,V值。(默認是TextInputFormat,還可以輸入其他的類型如:音視頻&…

利用selenium webdriver點擊alert提示框

在進行元素定位時常常遇到這樣的alert框: 那么該如何定位并點擊確定或取消按鈕呢?stackoverflow上找到了這個問題的答案。 OK, Show you the code: 1 driver.findElement(By.id("updateButton")).click(); 2 //pop up w…

Log 日志的使用與重要性

開發過程中出現bug是必不可免的,你會怎樣debug?從第1行代碼開始看么?還是有個文件里面記錄著哪里錯了更方便呢!!!log日志 Python中有個logging模塊可以完成相關信息的記錄,在debug時用它往往事…

webdriver 的三種等待方式

1、顯式等待 一個顯式等待是你定義的一段代碼,用于等待某個條件發生然后再繼續執行后續代碼。 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait #…

Django的核心思想ORM

元類實現ORM 1. ORM是什么 ORM 是 python編程語言后端web框架 Django的核心思想,“Object Relational Mapping”,即對象-關系映射,簡稱ORM。 一個句話理解就是:創建一個實例對象,用創建它的類名當做數據表名&#x…

Secondary Namenode的Check point機制以及Namenode、Datanode工作機制說明

目錄前言:1、NameNode的工作機制2、DataNode的工作機制3、Secondary Namenode的Check point機制 目錄 前言: 在說明checkpoint機制之前,先要了解下namenode、datanode的一些功能和職責。 1、NameNode的工作機制 問題場景: 1…

表單驗證的初步實現和省市級聯

1.表單驗證的初步實現 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html xmlns"http://www.w3.org/1999/xhtml" lang"en"><head><meta http-equiv"Conte…

抓包軟件:Charles

修正&#xff1a;手機不必一定連接電腦分享的熱點&#xff0c;只需要手機和電腦在同一個局域網下就可以了&#xff0c;手機代理IP設置為電腦的IP。 之前寫過一篇通過Wireshark進行抓包&#xff0c;分析網絡連接的文章《通過WireShark抓取iOS聯網數據實例分析》&#xff1a;htt…

Hive的相關介紹

目錄前言&#xff1a;1、Hive簡介2、Hive架構3、Hive與Hadoop的關系4、Hive與傳統數據庫對比5、Hive的數據存儲總結&#xff1a; 目錄 前言&#xff1a; 為什么使用Hive 直接使用hadoop所面臨的問題 人員學習成本太高 項目周期要求太短 MapReduce實現復雜查詢邏輯開發難…