我有一个带有嵌套选择的hibernate查询:
((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();
如果我按原样运行此查询,则不会收到任何错误或警告,也不会显示任何结果(返回null)。如果我通过用硬编码值替换第二个参数来更改查询,我得到了我期望的结果:
((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中单独正确地一起工作。 para不能在Hibernate嵌套选择中工作,还是我错过了什么?
我正在使用带有JSF 1.2和Seam 2的hibernate 3.31。
答案 0 :(得分:0)
您可以运行调试器并检查查询字符串在每种情况下的外观吗?我想你可能会错过你认为自己包括的空间或其他角色。我不认为嵌套选择会成为一个问题。