У меня есть запрос гибернации с вложенным выбором:
((EntityManager)Component.getInstance("entityManager")).createQuery("SELECT e FROM someEntity e " +
"WHERE e.field1 = ?1 AND e.field2 IS NOT NULL AND " +
"e.field3 IN " +
"(SELECT t.field3 from otherEntity t " +
"WHERE t.id.field4 = ?2 " +
"AND t.field5 > 0 " +
"AND t.field6 != 'SUBMITTED')")
.setParameter(1, processor.ONE_PARAM)
.setParameter(2, processor.OTHER_PARAM)
.getResultList();
Если я запускаю этот запрос как есть, я не получаю никаких ошибок или предупреждений и никаких результатов (возвращает ноль).Если я изменю запрос, заменив 2-й параметр жестко закодированным значением, я получу ожидаемые результаты:
((EntityManager)Component.getInstance("entityManager")).createQuery("SELECT e FROM someEntity e " +
"WHERE e.field1 = ?1 AND e.field2 IS NOT NULL AND " +
"e.field3 IN " +
"(SELECT t.field3 from otherEntity t " +
"WHERE t.id.field4 = hardcoded_other_param " +
"AND t.field5 > 0 " +
"AND t.field6 != 'SUBMITTED')")
.setParameter(1, processor.ONE_PARAM)
.getResultList();
Внешний и вложенный запрос работают в Oracle отдельно и вместе корректно.Параметры не работают во вложенных выборках Hibernate или я что-то упустил?
Я использую Hibernate 3.31 с JSF 1.2 и Seam 2.