Lucy20180417 2012-06-26 14:50
浏览 229
已采纳

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>

 以上为ArchiveContractDraft

PS:我已经把映射文件配置在applicationContext文件中了,其他地方该配置的我也配置好了

  • 写回答

4条回答

  • iteye_1328 2012-06-26 22:34
    关注

    1、检查是否queryKey1 前后是否有空格,
    2、查看数据库是否只有一条记录是否满足queryKey1的查询条件,如果是的话,检查分页是否对了
    3、是否乱码,查看queryKey1的字符编码 打印出SQL debug的时候,copy生成的SQL放数据库里面执行

    PS:写个简单的单元测试吧,直接run下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)