首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 问一个Hibernate与SQL的问题!在Hibernate里调用sql语句,语句用了SQL的自定义函数
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 15:42:57 楼主
    在数据库mssql2000有自定义函数:
    SQL code
    CREATE FUNCTION f_ConcatPartys(@org numeric,@date_from datetime,@date_to datetime) RETURNS VARCHAR(8000) AS BEGIN declare @sql varchar(8000) set @sql= '' select @sql=isnull(@sql+'','')+t_name from [Table] where org_id = @org_id and date_f >= @date_from and date_t <= @date_to order by id RETURN @sql END


    Java code
    HQuery hquery=new HQuery(); String hsql="dbo.f_ConcatPartys("+org_id+",'"+date_from+"','"+date_to+"') from [Table] as a where a.date_f >='"+date_from+"' and a.date_t <= '"+date_to+"' and group by a.org_id"; hquery.setQueryString(hsql); List _list=this.find(hquery); 报错: net.sf.hibernate.QueryException: undefined alias: f_ConcatPartys [select dbo.f_ConcatPartys(98336778,'20080101','20080101') from ....

    请问在hibernate里怎样调用sql的自定义函数
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-13 12:13:191楼 得分:0
    回答不上来,up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fcjg
    • 等级:
    发表于:2008-05-13 16:17:102楼 得分:0
    关注,顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-19 10:10:363楼 得分:0
    别做梦了,你以为HIB能干什么.你可以获得翻译后的SQL,再想办法加进你的自定义函数,再用本地查询.
    垃圾HIB
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 14:01:234楼 得分:0
    lz可以用一下SQLQuery 这个对象,支持sql语句。

    3楼的肯定不了解hibernate ,在不明白一个东西之前不要乱下定论哦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-04 14:24:435楼 得分:0
    哎,首先代码好长,看起来很累的,如果你是想使用Hibernate去调用数据库中的一个存储过程或者试图,你可以采用hibernate的原生sql啊,
    Hibernate提供了HQL的同时,也提供了jdbc的选择.那么在实现的过程中就有了很多的选择.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tiannet
    • 等级:
    发表于:2008-06-04 15:21:276楼 得分:0
    同意楼上,可以使用原生SQL,像一般的JDBC操作一样,
    如:
    SQLQuery sqlQuery = session.createSQLQuery("update t_users set true_name=? where user_id=?");
    sqlQuery.setParameter(0, "管理员Native");
    sqlQuery.setParameter(1, new Integer(1));
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-02 09:18:137楼 得分:0
    都用原生SQL,要HIB做什么?
    很多人这么笑话HIB
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-02 18:04:388楼 得分:0
    SQLQuery
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-14 16:30:589楼 得分:0
    session.createSQLQuery("......")  对 就它!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-15 16:50:2410楼 得分:0
    引用 7 楼 kidfang 的回复:
    都用原生SQL,要HIB做什么?
    很多人这么笑话HIB


    跳开Hibernate 原生sql有缓存机制?
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved