hibernate嵌套的select参数

时间:2012-01-05 19:13:55

标签: hibernate seam

我有一个带有嵌套选择的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。

1 个答案:

答案 0 :(得分:0)

您可以运行调试器并检查查询字符串在每种情况下的外观吗?我想你可能会错过你认为自己包括的空间或其他角色。我不认为嵌套选择会成为一个问题。