2012-01-05 66 views
0

我有一个嵌套的选择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。做参数在Hibernate嵌套选择中不起作用,还是我错过了某些东西?

我用冬眠3.31与JSF 1.2和Seam 2

回答

0

可以运行调试器和检查什么的查询字符串看起来貌似在每种情况下?我想你可能错过了你认为自己包含的空间或其他角色。我不认为嵌套选择会是一个问题。

+0

我接受这个答案,当我改变了sql的使用变量,它开始工作。 – gebuh 2012-01-06 16:19:55