当前位置:首页 » 存储配置 » 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-14 00:44:27 浏览:386
小米怎么把视频加密 发布:2025-07-14 00:42:59 浏览:406
在线申诉找回密码根本什么都没有 发布:2025-07-14 00:41:22 浏览:306
拉新用什么安卓手机可以 发布:2025-07-14 00:41:19 浏览:418
androidhome键退出 发布:2025-07-14 00:30:03 浏览:506
我都世界模组反编译教程 发布:2025-07-14 00:29:45 浏览:646
法因数控钻床编程手册 发布:2025-07-14 00:18:26 浏览:490
gcc编译怎么知道错误的行数 发布:2025-07-14 00:06:21 浏览:383
压强算法 发布:2025-07-14 00:02:52 浏览:552
dns怎么配置端口 发布:2025-07-13 23:49:16 浏览:761