HQL不返回结果,但直接查询时它可以工作

时间:2013-08-11 22:32:47

标签: java sql hibernate oracle11g hql

我在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'

1 个答案:

答案 0 :(得分:1)

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