當前位置:首頁 » 存儲配置 » hibernate存儲過程調用

hibernate存儲過程調用

發布時間: 2023-02-14 16:30:45

㈠ 關於Oracle存儲過程及Hibernate調用

關於Oracle存儲過程及Hibernate調用
發工具創建資料庫連接給項目添加hibernate配置文件打所創建資料庫連接hibernate映射選項映射java實體類存取數據都通實體類映射配置文件檢測並結列印控制台

㈡ 關於hibernate調用存儲過程

調用存儲過程可以不寫配置文件,直接在類中搞定! 有問題可以網路Hi 我!~
例子
public void saveStoredProcere(final String adminId, final String menuId, final String toolbars) {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, sqlException {
SQLQuery sqlQuery = session.createSQLQuery("{call P_SaveOperatorPopedom(?,?,?)}");
sqlQuery.setString(0, adminId);
sqlQuery.setString(1, menuId);
sqlQuery.setString(2, toolbarsXML);
sqlQuery.executeUpdate();
return null;
}
});
}

重點是這個寫法 session.createSQLQuery("{call P_SaveOperatorPopedom(?,?,?)}");
我這邊用的是spring提供的HibernateDaoSupport

㈢ 如何通過hibernate去調用存儲過程

說實話還真看不出來hibernate調用存儲過程有什麼優勢
Java代碼 CREATE TABLE `proctab` ( `id` int ( 11 ) NOT NULL auto_increment, `Name` varchar ( 20 ), `age` int ( 11 ), PRIMARY KEY (`id`) ) CREATE TABLE `proctab` ( `id` int ( 11 ) NOT NULL auto_increment, `Name` varchar ( 20 ), `age` int ( 11 ), PRIMARY KEY (`id`) )
簡單的存儲過程
Java代碼 create PROCEDURE proc() begin select * from proctab; end ; create PROCEDURE proc() begin select * from proctab; end ;
一種方法是通過hibernate傳統的xml映射方式去調用
Java代碼 <class name="com.test.User" table="proctab"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" column="name" type="string" /> <property name="age" column="age" type="integer" /> </class> <sql-query name="getUser" callable="true"> <return alias="user" class="com.test.User"> <return-property name="id" column="id" /> <return-property name="name" column="name" /> <return-property name="age" column="age" /> </return> {call proc()} </sql-query> <class name="com.test.User" table="proctab"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" column="name" type="string" /> <property name="age" column="age" type="integer" /> </class> <sql-query name="getUser" callable="true"> <return alias="user" class="com.test.User"> <return-property name="id" column="id" /><return-property name="name" column="name" /> <return-property name="age" column="age" /> </return> {call proc()} </sql-query>
調用方法
Java代碼 Session ss= HibernateSessionFactory.getSession() List li=ss.getNamedQuery("getUser").list(); ss.close(); Session ss= HibernateSessionFactory.getSession() List li=ss.getNamedQuery("getUser").list(); ss.close();
及其類似jdbc的方法
Java代碼 Session session =HibernateSessionFactory.getSession(); Connection conn = session.connection(); ResultSet rs =null; CallableStatement call = conn.prepareCall("{Call proc()}"); rs = call.executeQuery(); rs.close(); session.close(); Session session =HibernateSessionFactory.getSession(); Connection conn = session.connection(); ResultSet rs =null; CallableStatement call = conn.prepareCall("{Call proc()}"); rs = call.executeQuery(); rs.close(); session.close();
這種方法基本上就是jdbc

還有就是通過強大的createSQLQuery來實現
個人比較喜歡這種方法
Java代碼 Session session =HibernateSessionFactory.getSession(); SQLQuery query = session.createSQLQuery("{Call proc()}"); List list =query.list(); session.close(); Session session =HibernateSessionFactory.getSession(); SQLQuery query = session.createSQLQuery("{Call proc()}"); List list =query.list(); session.close();
如果沒有返回值 直接用execute的方法就可以了
還有一個重要的問題就是存儲過程的傳參問題
Java代碼 CallableStatement call = conn.prepareCall("{Call proc(?)}"); call.setString(1, 參數); rs = call.executeQuery(); CallableStatement call = conn.prepareCall("{Call proc(?)}"); call.setString(1, 參數); rs = call.executeQuery();
Java代碼 SQLQuery query = session.createSQLQuery("{Call proc(?)}"); query.setString(0, 參數); List list =query.list();

㈣ 你好,請教一問題 我在mysql寫了一個存儲過程返回一個結果集,如下圖,我在SSH2的項目中如何調用

使用HIbernate調用存儲過程的方法如下:
匿名內部類,HibernateCallback中執行存儲過程
語法 {call 存儲過程名(?,?,?)} ?為參數佔位符
示例如下:
List logList =
(List)this.getHibernateTemplate().execute(new HibernateCallback(){
@SuppressWarnings("unchecked")
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
String procereSql = "CALL PROCEDURE(?, ?)";
Query query = session.createSQLQuery(procereSql);
query.setParameter(0, endDate);
query.setParameter(1, code);
List list = query.list();
return list;
}
});

有問題再追問,good luck!~

㈤ Hibernate 調用存儲過程 該語句沒有返回結果集

修改存儲過程試試:
alter procere test()
as
SET NOCOUNT ON --加上這句話;有的出現這個問題,加上之後問題解決了;嘿嘿

㈥ 下面這個復雜的postgresql存儲過程怎樣被hibernate調用

我先不說怎麼調用,就拿存儲過程和hibernate來說吧
存儲過程的執行對資料庫的修改等操作.hibernate是無法檢測到的.所以盡然用了hibernate就不要再把業務邏輯放到資料庫中去.把存儲過程以及觸發器什麼的都變成普通的業務邏輯放到java中來處理.這樣做你會知道他的好

㈦ Hibernate中調用存儲過程並傳入Date型的參數出問題

你試驗一下
首先將日期格式轉換成你要的格式
SimpleDateFormat f = new SimpleDateFormat("yyyy-mm-dd hh:cc:ss");
保存的時候為
session.save(f.format(new Date());
試驗一下
另外在hibernate中設置date類型看看給它的長度也就是length是否超過

㈧ hibernate怎麼用註解的方式調用存儲過程

不支持。用hibernate,就不要用NativeSQL,至少不要在同一個session內混用,存儲過程也是native的

㈨ hibernate調用存儲過程,connect需要關閉嗎

hibernate調用存儲過程,connect是不需要關閉的。
hibernate在電腦里是休眠的意思。
在使用休眠模式時,可以關閉計算機,並確信在回來時所有工作(包括沒來得及保存或關閉的程序和文檔)都會完全精確地還原到離開時的狀態。內存中的內容會保存在磁碟上,監視器和硬碟會關閉,同時也節省了電能,降低了計算機的損耗。一般來說,使計算機解除休眠狀態所需的時間要比解除等待狀態所需的時間要長,但休眠狀態消耗的電能更少。
如果工作時經常被打斷,如某些秘書職業,往往一邊要進行計算機處理一邊還得接聽電話等等,你就可以考慮將計算機設置為經過指定多少分鍾後進入自動休眠模式。休眠模式會將內存中的所有內容保存到硬碟,關閉監視器和硬碟,然後關閉計算機。
此外,Win7還有一種混合睡眠的模式。
混合睡眠是先把信息寫到硬碟的hiberfil.sys文件中,再進行睡眠。如果沒有終止外部供電,則睡眠,如終止外部供電,則再次開機時讀取hiberfil.sys進行恢復,可以說整合了兩者的優勢:比起睡眠有防掉電的功能,且比起休眠在不終止外部供電的情況下啟動速度更快。這一項可以在高級電源設置中調整。
如果用命令行禁用休眠,開始菜單的睡眠就相當於以前Windows XP的待機,沒有混合睡眠的功能以及設置項目了。

㈩ 我在做hibernate調用存儲過程的時候報了一個無效索引不知道是哪裡出了問題請高手解決

先檢查你的存儲過程能不能執行,直接在資料庫上執行,先不用hibernate.....

熱點內容
安卓微信好友刪除怎麼找回來 發布:2025-07-13 16:28:10 瀏覽:123
華為微信自動存儲 發布:2025-07-13 16:26:45 瀏覽:195
svn外網不能訪問 發布:2025-07-13 16:26:33 瀏覽:724
易語言dll加密 發布:2025-07-13 16:17:50 瀏覽:808
java編寫記事本程序 發布:2025-07-13 16:12:13 瀏覽:663
辦公室如何做數據伺服器 發布:2025-07-13 15:55:24 瀏覽:327
用一句話證明我很窮ftp 發布:2025-07-13 15:54:48 瀏覽:936
安卓如何啟動畫面 發布:2025-07-13 15:43:22 瀏覽:643
安卓哪個娃娃 發布:2025-07-13 15:35:52 瀏覽:142
伺服器列表格式錯誤什麼意思 發布:2025-07-13 15:33:05 瀏覽:170