代码之家  ›  专栏  ›  技术社区  ›  Timo Westkämper

JDOQL子查询计数问题

  •  1
  • Timo Westkämper  · 技术社区  · 15 年前

    我对JDOQL(使用DataNucleus)的子查询计数有问题。以下查询

    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 回复  |  直到 15 年前
        1
  •  1
  •   Timo Westkämper    15 年前

    我通过从DataNucleus 2.0.4升级到2.1.2解决了问题。第一个查询有效。

    推荐文章