欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

hibernate中HQL如何調(diào)用自定義函數(shù)

 更新時(shí)間:2023年09月05日 10:30:45   作者:牟云飛  
這篇文章主要介紹了hibernate中HQL如何調(diào)用自定義函數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

hibernate中HQL調(diào)用自定義函數(shù)

在編寫hql語句時(shí),如果使用自定義的函數(shù),hql在編譯過程中將無法編譯通過,這時(shí)我們需要重寫下dialect方言類,

這里我的oracle是10,可以根據(jù)自己的oracle版本繼承不同的oracle方言類。

解決錯(cuò)誤的步驟

  • 重寫dialect類,如Oracle10gDialect
  • 修改hibernate的配置文件,將默認(rèn)的方言類,改成我們重寫的方言類  

-------數(shù)據(jù)庫函數(shù)WX_F_GET_PARTYSTR 輸入number輸出varchar2-------

CREATE OR REPLACE FUNCTION WX_F_GET_PARTYSTR(V_DEPT_ID NUMBER --人員信息中包含的部門ID) RETURN VARCHAR2 AS
      T_UP_DEPT NUMBER(10);--上級(jí)部門ID,臨時(shí)參數(shù)
      T_DEPT_TEMP VARCHAR2(2000);--部門名稱
      T_DEPT_STR VARCHAR2(2000);--要返回的已拼接部門名稱字符串
      BEGIN
          //省略
     END WX_F_GET_PARTYSTR;

一、重寫方言類,函數(shù)名用小寫

import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.type.StringType;
public class MyDialect extends Oracle10gDialect{
	public MyDialect(){
		super();
		//函數(shù)名必須是小寫,試驗(yàn)大寫出錯(cuò)
		//SQLFunctionTemplate函數(shù)第一個(gè)參數(shù)是函數(shù)的輸出類型,varchar2對(duì)應(yīng)new StringType()    number對(duì)應(yīng)new IntegerType()
		//?1代表第一個(gè)參數(shù),?2代表第二個(gè)參數(shù)     這是數(shù)據(jù)庫wx_f_get_partystr函數(shù)只需要一個(gè)參數(shù),所以寫成wx_f_get_partystr(?1)
		this.registerFunction("wx_f_get_partystr", new SQLFunctionTemplate(new StringType(), "wx_f_get_partystr(?1)"));
	}
}

二、修改hibernate配置文件,修改完成后重啟服務(wù)

將原來的hibernate.dialect由原來的hibernate默認(rèn)默認(rèn)的

<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>

改成

<property name="hibernate.dialect">com.wx.web.struts.MyDialect</property>

-------------------   hql調(diào)用便可以識(shí)別  ---------------------

String hql="select new com.entity.wx.AddressBook(a.userId,a.userName," +
? ? " wx_f_get_partystr(a.department), " +
? ? "a.position, a.mobile,a.email,a.weixinId,a.avatar,a.status) " +
? ? "from WxContacts a where a.userId in("+userId_str+") order by substr(a.userName,0,1)";

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java編程約瑟夫問題實(shí)例分析

    java編程約瑟夫問題實(shí)例分析

    這篇文章主要介紹了java編程約瑟夫問題實(shí)例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Spring Retry重試框架的使用講解

    Spring Retry重試框架的使用講解

    重試的使用場景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時(shí),由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時(shí),此時(shí)可以多重試幾次。用定時(shí)任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個(gè)注解搞定所有,感興趣的可以了解一下
    2023-01-01
  • Redisson RedLock紅鎖加鎖實(shí)現(xiàn)過程及原理

    Redisson RedLock紅鎖加鎖實(shí)現(xiàn)過程及原理

    本文主要介紹了Redis中Redisson紅鎖(Redlock)使用原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Java中JWT令牌實(shí)現(xiàn)登錄驗(yàn)證

    Java中JWT令牌實(shí)現(xiàn)登錄驗(yàn)證

    本文主要介紹了JWT令牌在Java中實(shí)現(xiàn)登錄驗(yàn)證的方法,JWT是一種自我包含的、無狀態(tài)的認(rèn)證機(jī)制,可以用來在客戶端和服務(wù)器之間傳遞安全可靠的信息,感興趣的可以了解一下
    2024-12-12
  • java swing 創(chuàng)建一個(gè)簡單的QQ界面教程

    java swing 創(chuàng)建一個(gè)簡單的QQ界面教程

    這篇文章主要介紹了java swing 創(chuàng)建一個(gè)簡單的QQ界面教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java基礎(chǔ)知識(shí)之FileInputStream流的使用

    java基礎(chǔ)知識(shí)之FileInputStream流的使用

    這篇文章主要介紹了java基礎(chǔ)知識(shí)之FileInputStream流的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JSON.toJSONString()空字段不忽略修改的問題

    JSON.toJSONString()空字段不忽略修改的問題

    這篇文章主要介紹了JSON.toJSONString()空字段不忽略修改的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • JAVA 對(duì)象創(chuàng)建與對(duì)象克隆

    JAVA 對(duì)象創(chuàng)建與對(duì)象克隆

    這篇文章主要介紹了JAVA 對(duì)象創(chuàng)建與對(duì)象克隆,new 創(chuàng)建、反射、克隆、反序列化,克隆它分為深拷貝和淺拷貝,通過調(diào)用對(duì)象的 clone方法,進(jìn)行對(duì)象的克隆,下面來看看文章的詳細(xì)內(nèi)容吧
    2022-02-02
  • Java中Boolean引發(fā)缺陷的解決

    Java中Boolean引發(fā)缺陷的解決

    本文主要介紹了Java中Boolean引發(fā)缺陷的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java IO和NIO的基本概念和API詳解

    Java IO和NIO的基本概念和API詳解

    JavaIO是基于流的阻塞式I/O,適用于低并發(fā)場景;JavaNIO是基于通道和緩沖區(qū)的非阻塞式I/O,適用于高并發(fā)場景
    2025-03-03

最新評(píng)論