关于hibernate子查询参数的问题
private Map<String, Object> createWblHqlContext(boolean needGroup, String startDate, String endDate) {
Map<String, Object> context = new HashMap<String, Object>();
// 构建hql
StringBuilder hql = new StringBuilder();
hql.append(this.createVaInfoWblDaySelectPart(startDate, endDate)).append(" ");
hql.append("from WfjWbl t where 1=1 ");
List<Object> params = new ArrayList<Object>();
if (startDate.length() > 0) {
hql.append(" and t.settlementDate >= ?");
params.add(startDate);
}
if (endDate.length() > 0) {
hql.append(" and t.settlementDate <= ?");
params.add(endDate);
}
if (needGroup)
hql.append(" ").append(this.createVaInfoWblDayGroupByPart());
context.put("hql", hql.toString());
context.put("params", params);
return context;
}
// 构造select字段
private String createVaInfoWblDaySelectPart(String startDate,String endDate) {
StringBuilder sb = new StringBuilder();
sb.append("select t.settlementDate,");// 清算日期
sb.append("sum(t.amount)/100 ,"); // 清算交易金额
sb.append("sum(t.amount)/100 ,"); // 交易笔数
sb.append("sum(t.shopfee)/100 ,"); // 商户手续费
sb.append("((sum(t.sdsy)/100-sum(t.advancefee)/100)) ,"); // 王府井入账金额
sb.append("sum(t.sdsy)/100, "); // 收单收入
sb.append("sum(t.wangsy)/100,"); // 王府井收入
sb.append("sum(t.cjfsy)/100, "); // 插件方收入
sb.append("sum(t.wangsh)/100, "); // 王府井损失
sb.append("sum(t.cjfsh)/100 "); // 插件方损失
sb.append("( ").append(this.createNoCardPayQueryThirdsySelectByPart())
.append(this.createNoCardPayQueryThirdsyFromByPart(startDate, endDate))
.append(" and t.mernum = '898110248990216'").append(this.createVaInfoWblDayGroupByPart()).append(") ");//代垫手续费(国美)
return sb.toString();
}
// 构造group by字段
private String createVaInfoWblDayGroupByPart() {
StringBuilder sb = new StringBuilder();
sb.append("group by t.settlementDate ");
return sb.toString();
}
//构造sql查询代垫手续费,
private String createNoCardPayQueryThirdsySelectByPart() {
StringBuilder sb = new StringBuilder();
sb.append("select sum(t.thirdsy)/100 ");
return sb.toString();
}
//构造sql查询代垫手续费的from部分
private String createNoCardPayQueryThirdsyFromByPart(String startDate, String endDate) {
StringBuilder sb = new StringBuilder();
sb.append("from WfjWbl t where 1=1 ");
List<Object> params = new ArrayList<Object>();
if (startDate.length() > 0) {
sb.append(" and t.settlementDate >= ?");
params.add(startDate);
}
if (endDate.length() > 0) {
sb.append(" and t.settlementDate <= ?");
params.add(endDate);
}
return sb.toString();
}
当添加红色部分内容时,页面就报org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: ( near line 1, column 215 [select t.settlementDate,sum(t.amount)/100 ,sum(t.amount)/100 ,sum(t.shopfee)/100 ,((sum(t.sdsy)/100-sum(t.advancefee)/100)) ,sum(t.sdsy)/100, sum(t.wangsy)/100,sum(t.cjfsy)/100, sum(t.wangsh)/100, sum(t.cjfsh)/100 ( select sum(t.thirdsy)/100 from cn.net.wangfujing.model.WfjWbl t where 1=1 and t.settlementDate >= ? and t.settlementDate <= ? and t.mernum = '898110248990216'group by t.settlementDate ) from cn.net.wangfujing.model.WfjWbl t where 1=1 and t.settlementDate >= ? and t.settlementDate <= ? group by t.settlementDate
求助!!!
关于hibernate子查询参数的问题的更多相关文章
- hibernate子查询
对于支持子查询的数据库,Hibernate支持在查询中使用子查询.一个子查询必须被圆括号包围起来(经常是SQL聚集函数的圆括号). 甚至相互关联的子查询(引用到外部查询中的别名的子查询)也是允许的. ...
- hibernate HQL查询参数设置
Hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的参数绑定: Prepa ...
- 利用Hibernate子查询(in) 得到部分字段(实体类的构造函数)
感人= = 终于弄好了 String hql="select new Shop(s.strid,s.shopname,s.tradearea,s.discountinfo,s.beginti ...
- Oracle子查询和多表查询
多表查询需要用到表的连接 连接可以分为:(自行百度) 交叉连接(数字逻辑的笛卡尔积,不做解释) 等值连接 例如:select * from t_a, t_b where t_a.xx = t_b.xx ...
- Hibernate 函数 ,子查询 和原生SQL查询
一. 函数 聚合函数:count(),avg(),sum(),min(),max() 例:(1)查询Dept表中的所有的记录条数. String hql=" select count(*) ...
- Hibernate 分组查询 子查询 原生SQL
分组查询: 使用group by关键字对数据分组,使用having关键字对分组数据设定约束条件,从而完成对数据分组和统计 1.1 聚合函数:常被用来实现数据统计功能 ① count() 统计记录条数 ...
- Hibernate HQL查询的参数绑定
参数绑定: Hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的参数绑定: ...
- Hibernate HQL中的子查询
子查询是SQL语句中非常重要的功能特性,它可以在SQL语句中利用另外一条SQL语句的查询结果,在Hibernate中HQL查询同样对子查询功能提供了支持. 如下面代码所示: List list=s ...
- hibernate的子查询
hibernate原话 HQL supports subqueries in the where clause. We can't think of many good uses for subque ...
随机推荐
- Decorators and Wrappers in Python
python代码一贯以优雅,简洁著称,而有时侯反而会让人难以理解,比如说wrapper(或者说decorator),这种方式提高了代码的可重用性,使用起来更简洁方便. 举个例子,比如WebApp常用的 ...
- 自增字段 auto_commit的研究分析
MySQL自增字段,自增字段计数器在主存储里面,不在硬盘上(This counter is stored only in main memory, not on disk). 1,添加表,设立自增主键 ...
- SPOJ 705 Distinct Substrings(后缀数组)
[题目链接] http://www.spoj.com/problems/SUBST1/ [题目大意] 给出一个串,求出不相同的子串的个数. [题解] 对原串做一遍后缀数组,按照后缀的名次进行遍历, 每 ...
- C# DLL文件注册问题(涉及AxInterop.WMPLib.dll等)
近日遇到问题,给客户安装软件涉及视频等音影播放,安装软件启动过程遇到这样问题: 分析报错原因: 没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG ...
- ThinkPad x200为何总是CPU占用50%
2009年,我从美国买回一台ThinkPad X200 Tablet,Windows XP Tablet PC Edition 2005版,服役几年一直很正常.直到2012年初的时候,突然发现电脑非常 ...
- hdu 4741 Save Labman No.004(2013杭州网络赛)
http://blog.sina.com.cn/s/blog_a401a1ea0101ij9z.html 空间两直线上最近点对. 这个博客上给出了很好的点法式公式了...其实没有那么多的tricky. ...
- 用 rsync 同步本地和服务器的文件
参考 DigitalOcean 安装 For Debian/Ubuntu: sudo apt-get install rsync For OpenSUSE/Fedora: sudo yum insta ...
- 如何将 MFC ActiveX 控件标记为安全,脚本和初始化
MSDN原文.ActiveX控件标记安全(可以不仅仅是MFC ActiveX) 概要 默认情况下,MFC ActiveX 控件未标记为对脚本编写是安全的和对初始化是安全的.控制运行在 Internet ...
- Database SQL script automation management tools investigation
Recently researched about database SQL scripts auto management tools, recorded the results here. Res ...
- JavaScript表单验证年龄
JavaScript表单验证年龄,判断一个输入量是否符合年龄,通过正则表达式实现. //检查年龄 function isAge(str){ var mydate=new Date; var now=m ...