hibernate查询的问题

问题描述

最近在做项目的过程中,遇到了一个让我觉得很困扰的问题,到这里来问一下各位! public String doQuery2() throws Exception {contractReviewInfo.setPopedom(getPopedom());if(!"1".equals(contractReviewInfo.getReadOnly())){contractReviewInfo.setErrorMessage(Message.MES_NO_POPEDOM);return "recordList2";}ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext());BaseDao baseDao = (BaseDao) ctx.getBean("baseDao");contractReviewInfo.setContractClass(baseDao.getLovMappingValue("contract_class_contract"));String hql = "select a from ArchiveContractDraft a,ReviewInfo r where a.archiveContractCode = r.archiveContractNo and a.contractType = '2' and r.examineResults = '0' and r.reviewClass = '1'";String queryKey1 = contractReviewInfo.getQueryKey1();String queryKey2 = contractReviewInfo.getQueryKey2();if(queryKey1 != null && !"".equals(queryKey1)){hql = hql + " and a.contractDraftName like '%" + queryKey1 + "%'";}if(queryKey2 != null && !"".equals(queryKey2)){hql = hql + " and a.isUrgent = '" + queryKey2 + "'";}List<ArchiveContractDraft> draftlist = baseDao.find(hql);PaginationSupport paginationSupport = new PaginationSupport(draftlist,draftlist.size()/20,20,0);contractReviewInfo.setPaginationSupport(paginationSupport);contractReviewInfo.setStartIndex(0);return "recordList2";} 以上代码,如果queryKey都为空的话,可以正常查出相应信息,如果选择了queryKey2,也可正常查出,但是当选择了queryKey1时,在plsql中可以查出的数据在程序中却查不出.不知道问题出在了那里,请大家帮忙看一下吧.下面我贴一下语句中涉及到的表的映射文件内容. <?xml version = '1.0'?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.yzwb.cctv.domain.ReviewInfo" table="REVIEW_INFO" schema="CCTV"><id name="ID" column="ID" type="string"><generator class="sequence"><param name="sequence">REVIEW_INFO_SEQ</param></generator></id><property name="submissionDate" column="SUBMISSION_DATE" type="date"></property><property name="censorsCertificate" column="CENSORS_CERTIFICATE" type="string"></property><property name="reviewTimes" column="REVIEW_TIMES" type="integer"></property><property name="accraditationDate" column="ACCRADITATION_DATE" type="date"></property><property name="examineResults" column="EXAMINE_RESULTS" type="string"></property><property name="alterReason" column="ALTER_REASON" type="string"></property><property name="firstExaminer" column="FIRST_EXAMINER" type="string"></property><property name="secondExaminer" column="SECOND_EXAMINER" type="string"></property><property name="comments" column="COMMENTS" type="string"></property><property name="reviewClass" column="REVIEW_CLASS" type="string"></property><property name="archiveAgreementNo" column="ARCHIVE_AGREEMENT_NO" type="string"></property><property name="archiveContractNo" column="ARCHIVE_CONTRACT_NO" type="string"></property><property name="creatDate" column="CREAT_DATE" type="date"></property><property name="creatPerson" column="CREAT_PERSON" type="string"></property><property name="giveUpReason" column="GIVEUP_REASON" type="string"></property></class></hibernate-mapping> 以上为ReviewInfo <?xml version = '1.0'?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.yzwb.cctv.domain.ArchiveContractDraft" table="ARCHIVE_CONTRACT_DRAFT" schema="cctv"><id name="archiveContractCode" column="ARCHIVE_CONTRACT_CODE" type="string"><generator class="assigned"></generator></id><property name="contractDraftName" column="CONTRACT_DRAFT_NAME" type="string"/><property name="archiveContractClass" column="ARCHIVE_CONTRACT_CLASS" type="string"/><property name="isUrgent" column="IS_URGENT" type="string"/><property name="createDate" column="CREATE_DATE" type="date"/><property name="createPerson" column="CREATE_PERSON" type="string"/><property name="createDepartment" column="CREATE_DEPARTMENT" type="string"/><property name="auditStatus" column="AUDIT_STATUS" type="string"/><property name="auditPerson" column="AUDIT_PERSON" type="string"/><property name="auditDate" column="AUDIT_DATE" type="date"/><property name="submissionStatus" column="SUBMISSION_STATUS" type="string"/><property name="filingStatus" column="FILING_STATUS" type="string"/><property name="contractType" column="CONTRACT_STATUS" type="string"/></class></hibernate-mapping> 以上为ArchiveContractDraftPS:我已经把映射文件配置在applicationContext文件中了,其他地方该配置的我也配置好了

解决方案

1、检查是否queryKey1 前后是否有空格,2、查看数据库是否只有一条记录是否满足queryKey1的查询条件,如果是的话,检查分页是否对了3、是否乱码,查看queryKey1的字符编码 打印出SQL debug的时候,copy生成的SQL放数据库里面执行PS:写个简单的单元测试吧,直接run下
解决方案二:
写的太乱,你自己调试下
解决方案三:
检查contractReviewInfo的queryKey1是否带空格。
解决方案四:
感觉说的有些乱,不知道是不是你这里写的有问题:if(queryKey1 != null && !"".equals(queryKey1)){ hql = hql + " and a.contractDraftName like '%" + queryKey1 + "%'"; } if(queryKey2 != null && !"".equals(queryKey2)){ hql = hql + " and a.isUrgent = '" + queryKey2 + "'"; } queryKey1和queryKey2都不为空的话,不知道你的组成的条件是不是你想要的。不过有一个办法,肯定可以找到问题:把sql打印出来,对比hibernate生成的sql和你写的sql的查询条件有什么不同

时间: 2024-08-25 04:45:37

hibernate查询的问题的相关文章

用hibernate查询一段时间的记录

这是在一个群里讨论的问题. 方法很多:如果说数据库中数据的存储是用date类型的话,改怎么做,如果说做数据迁移的话又该怎么做? 最终的讨论方案在用字符串存储格式上比较好,毕竟各个数据库对时间的存储存在差异. 一下是我用hibernate中的HQL,和QBC两种检索方式对一段时间内的数据进行检索. 1 package com.duduli.li; 2 3 import java.util.Date; 4 import java.util.Iterator; 5 import java.util.L

设计-关于hibernate查询的和开发中的一些疑问

问题描述 关于hibernate查询的和开发中的一些疑问 我在开发的过程中遇到一些疑问,希望各大牛帮我解答下. 环境介绍: 假设现在有2个表 表名:category(文章分类) 字段: id 主键 name 文章分类中文名 desc 描述 表名:article(文章列表) 字段: id 主键 categoryid 分类id title 文章标题 content 内容 因为用的是hibernate, 上面两个表对应的PO分别是CategoryPO , ArticlePO.没有配置外键映射. 现在要

hibernate查询速度问题

问题描述 用hibernate查询数据,记录1000条,一次查出,不分页,从按查询到显示在jsp需要10几秒,请问是否正常?问题补充:要求不分页的,直接显示1000条 解决方案 应该不是慢在查询上面了,应该是查询的1000条记录放在List之中,以及把List之中的objcet显示给页面速度慢.你可以试一下直接在数据库中查询这些记录 看看速度多少,如果直接查1~2s Hibernate查也就在4s 应该用不了. 我的意思是 Hibernate不比直接SQL查慢多少.解决方案二:查询有没有表连接.

java-jdbc 来查询视图 和 hibernate 查询视图 问题

问题描述 jdbc 来查询视图 和 hibernate 查询视图 问题 伙伴们 现在我在用 jdbc 查询视图 和 hibernate查询视图 都显示不出来数据 (list用来接受数据,调试时的list的size不为0,可数据都是Null 这是怎么回事) 解决方案 JPA的视图查询Hibernate查询视图数据Hibernate createQuery查询视图返回list为空 解决方案二: 如果你给一下查询的代码,或许可以帮你分析一下

hibernate查询两张表问题,求解答?

问题描述 hibernate查询两张表问题,求解答? 我有 user表 : 有name,age,等等 course表: coursename,score,teachername,user_ID(user主键) 现在我需要前台展示一个数据表 学生姓名 课程 分数 应该怎么实现啊?使用链表吗? ?? 解决方案 最好是在数据库把这几张表做一个视图,然后写一个model类对应这个视图,这样更简单方便点 解决方案二: 如果这2张表有关联的话,,hibernate会自动级联的,查user就会把course查

一个hibernate查询oracle 8i 的问题

问题描述 一个hibernate查询oracle8i的问题:在dao中用sql查询某个日期(包含分.秒),sql如:selectid,record_datefromreftableoracle8i的retable表为:(idvarchar2(30);record_datedate).表数据为:('ref123','2010-02-2010:20:36')现在的问题是:用SqlQuery查询上面的sql后的结果中,record_date值只有年月日,没有分秒,怎样写sql才能查询出record_d

struts2+Hibernate查询速度为何那么慢

问题描述 struts2+hibernate整合,将hibernate查询出List对象在jsp页面使用struts2的<s:iterator>标签显示,为何加载速度是那么的慢啊? 谢谢啦!! 问题补充:luo_yong_men 写道 解决方案 一层一层的测,数据层.业务层.表现层分开测,另外struts2的迭代标签效率确实很低下,这个我测过的,jstl的c标签效率比它效率高不少.解决方案二:你说的这个慢 不能这样说 是hibernate慢 应为 你已经是整个过程了你直接在 dao层 对查询前

session-新手求教hibernate查询功能的写法

问题描述 新手求教hibernate查询功能的写法 网上找了一个 public static Object get(Class clazz, int id) { Session session = null; try{ session= HibernateUtil.getSession(); Object obj = session.get(clazz, id); return obj; }finally {// 保证资源得到释放 if(session != null) { session.cl

查询 hibernate 回滚-hibernate 查询出现回滚 为什么

问题描述 hibernate 查询出现回滚 为什么 at org.jboss.resource.adapter.jdbc.local.LocalManagedConnection.rollback(LocalManagedConnection.java:97) at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.tidyup(TxConnectionManager.java:7

hibernate查询

问题描述 因为最近要做个中型 所以想了解hibernate查询原理 能详细点 最好点点例子 跪谢!!! 解决方案 http://www.redsaga.com/hibernate-ref/3.x/zh-cn/html/queryhql.html其实官方的中文手册就是最好的学习文档了解决方案二:可以用Hql查询啊?解决方案三:hibernate做复杂查询,我觉得还是不太合理,他给你自动拼出来的SQL不一定是最优化的建议复杂查询还是用原生SQL比较好,这样好控制解决方案四:查询原理?到最底下还是jd