2010-10-22 43 views
1

我在使用JDOQL(使用DataNucleus)進行子查詢計數時遇到了問題。下面的查詢JDOQL子查詢計數問題

SELECT this.price 
FROM com.mysema.query.jdo.test.domain.Product 
WHERE (SELECT count(other) 
FROM com.mysema.query.jdo.test.domain.Product other 
WHERE other.price > this.price) > a1 
PARAMETERS java.lang.Long a1 

導致異常

javax.jdo.JDOUserException: Cannot perform operation ">" on SubqueryExpression "(SELECT COUNT("OTHER".PRODUCT_ID) FROM PRODUCT "OTHER" WHERE "OTHER".PRICE > THIS.PRICE)" and IntegerLiteral "?" 
    at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:390) 
    at org.datanucleus.jdo.JDOQuery.executeWithArray(JDOQuery.java:321) 

下面的查詢工作既不:

SELECT this.price 
FROM com.mysema.query.jdo.test.domain.Product 
WHERE !(SELECT other 
FROM com.mysema.query.jdo.test.domain.Product other 
WHERE other.price > this.price).isEmpty() 

什麼是確保一個子查詢的結果是不是空的正確方法?

回答

1

我得到了從DataNucleus 2.0.4升級到2.1.2所解決的問題。第一個查詢起作用。