无法在 org.datanucleus.store.rdbms.sql.expression.SubqueryExpression 上执行操作“.isEmpty”

Cannot perform operation ".isEmpty" on org.datanucleus.store.rdbms.sql.expression.SubqueryExpression

我有一个如下所示的子查询: (由于性能问题,它是从包含重写的)

...(select 来自 RecoLock 锁,其中 mpiSubscriptionId == this.mpiSubscriptionId).isEmpty())

datanucleus 给我一个


无法在 org.datanucleus.store.rdbms.sql.expression.SubqueryExpression

上执行操作“.isEmpty”

但在 datanucleus documentation 中有类似代码运行良好的例子。我做错了什么?

datanucleus 版本为 4.1.0

据我所知,DataNucleus JDOQL 对 {subquery}.isEmpty() 的支持仅从 v5.0 开始支持。

如果使用 v4.x(或更早版本),您可以将查询转换为执行

... (select COUNT(lock) from RecoLock lock where mpiSubscriptionId == this.mpiSubscriptionId) == 0)

应该等同于 "size == 0"(即 "empty")