1. 程式人生 > >hibernate實現表聯查並獲取某個欄位的最大值(隨筆)

hibernate實現表聯查並獲取某個欄位的最大值(隨筆)

最近試用hibernate實現三表連線查詢並分組顯示某個欄位的最大值,在mysql中語句可以執行,改成hql無法執行,遂寫下隨筆以記錄

mysql中查詢,可以查詢到相應的結果

改寫成hql語句

"select o.equipment.equId, o.olderName , e1.power, max(opr.oTime),e1.location from Older o ,Equipment e1 , OperationRecord opr where opr.equipment.equId = o.equipment.equId = e1.equId and e1.equId in(select e2.equId from Equipment e2 where e2.user.userId ="+userId+")group by o.equipment.equId,opr.equipment.equId" ;

執行程式會報如下錯誤:


之前以為是欄位名沒有對應上,仔細檢視,沒有問題,然後又以為是hibernate中需要給函式(max)取別名,依然報錯,經多次嘗試修改,將上面hql紅字部分改寫為藍字標記部分:

"select o.equipment.equId, o.olderName , e1.power, max(opr.oTime),e1.location from Older o ,Equipment e1 , OperationRecord opr where opr.equipment.equId = e1.equId and o.equipment.equId = e1.equId and e1.equId in(select e2.equId from Equipment e2 where e2.user.userId ="+userId+")group by o.equipment.equId,opr.equipment.equId"

然後可以執行顯示如下結果:

遂寫下個人總結:hibernate可能不支援多等號連線,需要將其進行拆分以and連線,純屬個人言論,僅供參考。。。。

相關推薦

hibernate實現聯查獲取某個隨筆

最近試用hibernate實現三表連線查詢並分組顯示某個欄位的最大值,在mysql中語句可以執行,改成hql無法執行,遂寫下隨筆以記錄 mysql中查詢,可以查詢到相應的結果 改寫成hql語句 "select o.equipment.equId, o.olderName

mybatis。插入語句如何插入資料庫中某一純sql實現

<insert id="inserts"> <selectKey keyProperty="ID" ORDER="BEFORE" resultType="java.lang.I

js把頁面明細行資料多個組成陣列,獲取某個和其次的資料賦到文字框;

要求:前臺新增頁面的明細行中,有列下拉框選擇分類和一列付款金額的輸入框,明細行上面有兩個輸入框,要求在明細行選擇的分類和付款金額中篩選付款金額之和第一高的的分類和金額、第二高的分類和金額自動複製到上面的兩個輸入框中; 思路:迴圈明細表,把所有的明細表的分類和付款金額放到json陣列中,然後迴圈j

hibernate實現查詢某實體的某個的多個的對應實體列表

在使用hibernate和資料庫互動時,可以是使用hibernate的session的各種操作資料庫方法,在實際使用中也常常結合hbm.xml檔案裡寫好的query執行塊,再通過setParameter方式設定引數後執行查詢獲取結果。其中經常使用的一個場景----hibern

oracle利用分析函式row_number()over()查詢一張所有按照其中部分分組查詢某

先準備資料: deptid :部門id. parent_deptid :deptid 的父級部門,也就是depid 是他的子部門。 create table test_employee (empid int ,deptid int ,parent_deptid int,sa

ORACLE 連線某個及分組後取某個(小)等實現方法

1.連線某個欄位 對於表A 我們有B和C兩個欄位 有時候,我們想B相同的,C欄位相連線的值,可以用WM_CONCAT和LISTAGG兩種方法。其中LISTAGG為11g中的新特性。 兩種用法如下: SELECT WM_CONCAT(V.USER_NAME) AS USER_

SQL分組且取每組某個

  有個表gz: 要按sku分組,同時取每個sku的stock最大的那條 SQL語句: SELECT * FROM (SELECT * FROM gz ORDER BY stock DESC ) a GROUP BY sku 結果: 如果要最小的

Java中實現對錶中多個的模糊查詢Oracle

public UserVO fuzzyQuery(String keyword) { UserVO user=null; ResultSet rs = null; PreparedStatement prep = null; try { String

MySQL之——GROUP BY分組取

出處:http://blog.csdn.net/l1028386804/article/details/54657412 假設有一個業務場景,需要查詢使用者登入記錄資訊,其中表結構如下: [sql]  view plain  cop

abap取某的方法

1.在表中降序/升序後取出第一行,如SELECT MATNR INTO TABLE @DATA(LT_MAKT) FROM MAKT UP TO 1 ROWS ORDER BY MA

MYSQL之排除重複結果只取

範例:PID相同的記錄只取ID值最大的那一條。 SELECT a.* FROM [mytable] a INNER JOIN (SELECT PID,MAX(ID) as max_id FROM [m

MySql按一個分組並且取另一個的記錄

要求:獲得按table1_id分組,並且age最大的記錄資訊,即2、3、5條 方法一: select * from (select * from table2 order by age desc

oracle 實現某個的自動增加相當於有些資料庫的自增列

說明:sqlserver 中設定某個列的自動增加是非常容易的,只需要在列後面加上 auto_increment即可,但是oracle在使用sql語句建立表時時不支援這種自增的。 那麼要實現自增列怎麼辦? 三步搞定 --1.建立表----- CREATE TABLE use

Java 合併兩個list按照某個排序

public static void main(String[] args) { List<ReplyInfo> replyInfos1 = new ArrayList<>(); ReplyInfo r1 = new ReplyInfo();

mysql查詢語句中對內容補(補零為例)length()函式獲取某個資料長度

mysql查詢語句中對欄位內容補位(補零為例)length()函式獲取某個欄位資料長度 jakehu      2014 年 4 月 10 日 mysql查詢語句中對欄位內容補位(補零為例)length()函式獲取某個欄位資料長度2014-04-

es:實現查詢某個為固定,另一個必須不能存在

要求:查詢出 positionName為空,hasJobRequest為1的資料   也可以嘗試用must ,must_not ,exist: {   "query": {     

無視修飾符,不經過getter函式直接獲取物件的某個的屬性

直接上程式碼: public class ReflectionUtils { /** * 直接讀取物件屬性值, 無視private/protected修飾符, 不經過getter函式. */ public static Object getFieldValue(fin

解析json串,按照某個排序

本文將為大家介紹json解析並按照某個欄位排序的方法。如果是漢字,轉化為漢語拼音後,按照字典順序排序。   原始json [{"proportionCost":0,"busiName":"aaav","userList":"李雷","allCost":53800,"liuCos

oracle 基礎和管理 如何判斷某個中是否存在某個

問題 如何判斷某個表中是否存在某個欄位? 注意:表名和欄位名一定要大寫,否則結果不正確一: 檢查表名:select count(*) from user_TABLES where table_name = 表名(大寫);檢查欄位名:select count(*) from U

Hibernate實現領域物件的自定義

在開發企業級業務應用(企業規模)時,客戶往往要求在不修改系統原始碼的情況下對應用物件模型的擴充套件性提供支援。利用可擴充套件域模型可以實現新功能的開發,而不需要額外的精力和成本 應用的使用週期將被延長; 外部因素改變時,系統工作流也可以隨之被修改;已經被部署的應用可以被“設