我用hibernate的原生sql查询出来的list的size为0,但是list不是空的!而且我用hibernate在控制台生成出来的sql可以在数据库里查询出数据,请问这是哪里的问题?
请各位大哥帮忙解答一下,小弟感激不尽!急.....
请各位大哥帮忙解答一下,小弟感激不尽!急.....
解决方案 »
- getHibernateTemplate().save(ad)奇怪情况,无语了。
- 是学J2EE好呢,还是C++
- 求助,三级JSP菜单
- jar,ear,war都是具体什么格式?各针对什么工程?有规范和要求吗?
- 这段话,谁能给翻译或解释一下
- 请问有哪位高人用过resin呀!!怎么配置第一个helloservlet
- jboss配置文件
- 谁能提供一个Jboss和Tomcat的源码的链接??
- 关于用SAX解析XML的问题!
- 怎么接收map中的参数 急急急 大神来帮忙啊
- 求高手赐教,apache+tomcat整合问题
- 高分求水晶报表异常Information is needed before this report can be processed的解决方案
这种事是不可能的仔细检查你的代码 如果检查不出来贴下 发现一个错误打一下PP
这是可能的,意思是说,按你的SQL语句查出来的数据,是没有至于LZ的,还是帖下SQL和相关的表吧,这样说不清啥问题
* 分配任务
* @invoiceFilterForm
* @since Feb 4, 2010
* @author 杨信
* @version 1.00 Feb 4, 2010
* @throws CreateException
*/
public void saveTask(RcjcInvWjcjkxxForm rcjcInvWjcjkxxForm) throws CreateException {
//定义保存税务机关代码和海关代码的变量
String sCpcodes = rcjcInvWjcjkxxForm.getCpcode();
//判断客户端传输的参数是否有效
if (sCpcodes != null && !"".equals(sCpcodes)) {
//将海关代码以逗号分隔成一个字符串数组
String[] sqlWhere = sCpcodes.split(",");
//根据数组的大小,依次将每个任务信息插入到任务数据库表中
for (int i = 0; i < sqlWhere.length; i++) {
String sCpcode = sqlWhere[i]; //临时变量,存储数组中的每一个元素
// 查询结果集的sql语句
StringBuffer sbListSQLQuery = new StringBuffer("SELECT cp.code as cpcode,cp.name as qyName,CONCAT(w.fp_dm,w.inv_no) AS fpNo,")
.append("w.xfswsbh as xfswsbh,w.gfswsbh as gfswsbh,w.je as je,w.se as se,w.kprq as kprq,")
.append("w.rzrq as rzrq,cp.swcode as swjgcode,cp.swname as swjgName,cl.name as jbr,fp.name as fzr,t.fp_date as fpsj,")
.append("t.fp_user_id AS fpUserId,t.cl_user_id AS clUserId ")
.append("FROM " + WebConstants.SCHEMA_SJWG + ".t28_inv_wjcjkxx w ")
.append("LEFT JOIN " + WebConstants.SCHEMA_CKTS + ".cpcode cp ON w.cpcode = cp.code ")
.append("LEFT JOIN " + WebConstants.SCHEMA_SJWG + ".t28_inv_wjcjkxx_task t ON CONCAT(w.fp_dm,w.inv_no) = CONCAT(t.inv_no,t.fp_dm) ")
.append("LEFT JOIN " + WebConstants.SCHEMA_SJWG + ".t01_dm_user cl ON t.cl_user_id = cl.swry_dm ")
.append("LEFT JOIN " + WebConstants.SCHEMA_SJWG + ".t01_dm_user fp ON t.fp_user_id = fp.swry_dm ")
.append("WHERE NVL(t.cl_flag,'0') = '0' AND NVL(t.cancel_flag,'0') = '0' AND TRIM(w.cpcode) = TRIM('" + sCpcode + "') ");
//设置SQLQuery别名
SQLQuery listSQLQuery = super.getSession().createSQLQuery(sbListSQLQuery.toString())
.addScalar("cpcode",Hibernate.STRING)
.addScalar("qyName", Hibernate.STRING)
.addScalar("fpNo", Hibernate.STRING)
.addScalar("xfswsbh", Hibernate.STRING)
.addScalar("gfswsbh", Hibernate.STRING)
.addScalar("je", Hibernate.DOUBLE)
.addScalar("se", Hibernate.DOUBLE)
.addScalar("kprq", Hibernate.DATE)
.addScalar("rzrq", Hibernate.DATE)
.addScalar("swjgcode", Hibernate.STRING)
.addScalar("swjgName", Hibernate.STRING)
.addScalar("jbr", Hibernate.STRING)
.addScalar("fzr", Hibernate.STRING)
.addScalar("fpsj", Hibernate.DATE)
.addScalar("fpUserId", Hibernate.STRING)
.addScalar("clUserId", Hibernate.STRING);
// 获得结果集
List list = listSQLQuery.list();
list = ConvertDoMainEntity.convertInvWjcjkxxQymxDomain(list, list.size());
if(list != null && list.size() > 0){
for (int j = 0; j < list.size(); j++) {
InvWjcjkxxQymxDomain iqd = (InvWjcjkxxQymxDomain) list.get(j);
// 封装数据到分配任务的对象中
T28InvWjcjkxxTask iwt = new T28InvWjcjkxxTask();
String fpNo = iqd.getFpNo(); // 发票号码(由发标号码和发票代码组成)
iwt.setFpDm(fpNo.substring(0, 10)); // 发票代码
iwt.setInvNo(fpNo.substring(10));// 发票号码
iwt.setXfswsbh(iqd.getXfswsbh()); // 销方税务机关代码
iwt.setGfswsbh(iqd.getGfswsbh()); // 供方税务机关代码
iwt.setJe(new Double(iqd.getJe())); // 金额
iwt.setSe(new Double(iqd.getSe())); // 税额
iwt.setKprq(Tools.string2date(iqd.getKprq(), "yyyy-MM-dd")); // 开票日期
iwt.setRzrq(Tools.string2date(iqd.getRzrq(), "yyyy-MM-dd")); // 认证日期
iwt.setZyfpNo(fpNo); // 专用发票号
iwt.setCpcode(iqd.getCpCode());// 海关代码
iwt.setGxDate(Tools.string2date(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), "yyyy-MM-dd HH:mm:ss"));// 更新日期
iwt.setFpUserId(rcjcInvWjcjkxxForm.getUserInfo().swryDm); // 负责人ID(当前登陆用户的税务人员代码)
iwt.setFpDate(Tools.string2date(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), "yyyy-MM-dd HH:mm:ss")); // 分配时间
iwt.setClUserId(rcjcInvWjcjkxxForm.getJbr()); // 经办人ID
iwt.setClFlag(0 + ""); // 处理标志,0为未处理,1为已处理
iwt.setCancelFlag(0 + ""); // 作废标志,0为正常,1为作废
iwt.setOpSwcode(iqd.getSwjgcode()); // 税务机关代码
super.insert(iwt);
}
}
}
}
}
/**
* 重新分配任务
* @param rcjcInvWjcjkxxForm 封装了海关代码的FormBean
* @throws UpdateException
* @since Feb 10, 2010
* @author 杨信
* @version 1.00 Feb 10, 2010
*/
public void updateTaskByCpcode(RcjcInvWjcjkxxForm rcjcInvWjcjkxxForm)
throws UpdateException {
String sCpcode = rcjcInvWjcjkxxForm.getCpcode(); //获得海关代码
//判断海关代码是否有效
if(sCpcode != null && !"".equals(sCpcode)) {
String[] cpcodes = sCpcode.split(","); //将海关代码以逗号分割成一个字符串数组
//遍历所有的海关代码,并根据海关代码依次取消属于该海关的任务
for (int i = 0; i < cpcodes.length; i++) {
//获得其中的一个海关代码
String sCpcodeTemp = cpcodes[i];
// 处理任务的HQL
String sUpdateHQL = "UPDATE " + rcjcInvWjcjkxxForm.getEntityName() + " SET gxDate = SYSDATE,"
+ "cancelFlag = 1,cancelUserId = :cancelUser,cancelDate = SYSDATE"
+ " WHERE cpcode = :cpcode AND cancelFlag='0' AND clFlag='0' ";
//获得Query对象
Query queryUpdate = super.getSession().createQuery(sUpdateHQL)
.setString("cancelUser", rcjcInvWjcjkxxForm.getJbr())
.setString("cpcode", sCpcodeTemp);
//执行取消任务操作
queryUpdate.executeUpdate();
}
}
try {
//重新分配任务
this.saveTask(rcjcInvWjcjkxxForm);//这里调用上面的分配任务方法
} catch (CreateException e) {
e.printStackTrace();
}
}我的目的是:首先将cancel_flag(cancelFlag)更新为1,然后再重新去查找cancel_flag(cancelFlag)=0的数据,请各位大哥帮忙看看
List list = listSQLQuery.list(); //这里显示list的size为0,但是不为空
用hibernate在控制台生成的sql语句,然后手动设置参数,确实能查到数据!!
请问楼主这个问题解决了吗?