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