【问题标题】:HQL not return results but when queried directly it worksHQL 不返回结果,但直接查询时有效
【发布时间】:2013-08-13 04:44:06
【问题描述】:

我在 HQL 中尝试以下查询,但没有得到任何结果。有人可以帮我解释为什么我没有得到任何结果吗?我尝试直接查询数据库(请参阅下面的 SQL),我得到 12 条记录。但是 HQL 给了我 0 条记录。

“原因”我输入以下字符串 - “'XXX1','YYY 2'”

我使用的数据库是 Pracle 11g。

String queryStr = "from DefectsTran t join t.defects d where d.releaseName=:rel and t.defectCause in :cause and t.latestRecord=:lastrec"; 

Query q = session.createQuery(queryStr);
q.setString("rel", release);
q.setString("cause", filter2);
q.setString("lastrec", "Y");

当我在 TOAD 中使用时可以正常工作的 SQL 查询。

select count(*) 
from QC10.defects_tran t
inner join QC10.defects on DEFECT_ID_FK_DT = RECORD_ID
where 
    DEFECT_CAUSE in ('Data Request Issue', 'Functioning as Expected', 'User Education Required', 'Test Script Incorrect', 'Test Specific')
    and t.latest_record = 'Y'

【问题讨论】:

    标签: java sql hibernate oracle11g hql


    【解决方案1】:

    使用q.setParameterList("cause", filter2); 代替q.setString("cause", filter2);。 filter2 必须是 Collection 子类型。请阅读有关可用于 setParameterList 的其他重载的更多信息:http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Query.html

    【讨论】:

    • 我试过了,但我仍然没有得到任何行 "List filter12=new ArrayList(Arrays.asList(filter2.split(",")));"跨度>
    • 请通过将org.hibernate.SQL logger level设置为DEBUG来调试hibernate生成的SQL。我确定您的代码某处存在错误
    • 谢谢。我的数据库数据有问题。
    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多