2010-10-22 20 views
1

J'ai des problèmes avec les comptes de sous-requêtes avec JDOQL (en utilisant DataNucleus). La requête suivanteProblèmes de nombre de sous-requêtes 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 

provoque l'exception

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) 

Les travaux requête suivante ne:

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() 

Quelle est la bonne façon de faire en sorte que le résultat d'une sous-requête n'est pas vide?

Répondre

1

J'ai été corrigé par la mise à niveau de DataNucleus 2.0.4 vers 2.1.2. La première requête fonctionne.