开发者社区> 问答> 正文

请教一个Hibernate数据库查询方法

今天在编码的时候遇到一个很奇怪的问题,请各位帮个忙。

先描述下问题:

String sql = "select org.id as id,org.name as orgName,t.applable as installAppLable ,count(a.id) as installAppCount from lmam_about a, ldap_org org, lmam_installedapplication t "
                + "where a.org_id = org.id and t.asset_id = a.id and a.org_id = '" + id + "' and t.applable='" + installAppLable + "'";
 List list = findBySQL(sql, "rep", ReportAppDTO.class, null);
 String count = "";

代码如上,该代码被写在一个dao方法中,当我调用此方法进入时,由于每次传递的参数是不同的,所以通过sql每次查出来的数据都是不一样的,但是,问题来了,执行到findBySQL时,第一次查到的是数据在数据库中查询和list赋值是正确的,但是第二次在进入该方法执行findBySql时,赋值给list的值却是之前第一次的,也就是说后面几次的赋值都无效,请问这种情况各位有遇到过么。

着重说下,由于findBySQL是被封装好的,因此我使用了反编译查询了下里面代码,如下

public <T extends ABaseDTO> List<T> findBySQL(String sql, String alias, Class<T> cls, Object[] params)
  {
    return getTemplate().findBySQL(sql, alias, cls, params, 2147483647, 0);
  }

实际上就是调用了hibernate的template中findBySQL方法,个人觉得是不是后面的数字,即第五个参数写死造成该问题,请各位帮分析下,谢谢

展开
收起
爵霸 2016-03-04 15:18:56 2201 0
1 条回答
写回答
取消 提交回答
  • 楼主每次参数都不一样,应该就不是缓存问题。考虑用session方式替代吧,不行就拿到template源代码调试下。

    2019-07-17 18:52:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载