0

我正在尝试在 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'
4

1 回答 1

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

于 2013-08-11T22:43:30.373 回答