grails - 使用 detachedCriteria 作为 in 子句的子查询

标签 grails subquery grails-orm detachedcriteria

我试图使用分离的条件作为“in”子句的子查询,但不知何故它不起作用:

def trades = new DetachedCriteria(Trade).build {
            projections { property "tradeNbr" }
}

def activities = Activiies.withCriteria {
            'in' "tradeNumber", trades
}

这是我遇到的错误:

2012-11-07 01:07:09,088 [http-bio-8081-exec-1] TRACE sql.BasicBinder  - f228562 - binding parameter [1] as [INTEGER] - grails.gorm.DetachedCriteria@57c4e7b2



grails.gorm.DetachedCriteria cannot be cast to java.lang.Integer. Stacktrace follows:
java.lang.ClassCastException: grails.gorm.DetachedCriteria cannot be cast to java.lang.Integer
            at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1587)
            at org.grails.datastore.gorm.GormStaticApi.withCriteria(GormStaticApi.groovy:282)

最佳答案

我相信 list 只是默认值,因为您可以在 each 结构中使用它,例如

trades.each {
    println it
}

那是因为它实现了 Iterable。否则,您实际上必须使用 trades.list() 运行查询。仅使用 trades 引用 DetachedCriteria 对象。

def activities = Activities.withCriteria {
    'in'("tradeNumber", trades.list())
}

关于grails - 使用 detachedCriteria 作为 in 子句的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13264525/

相关文章:

grails - "grails console"和 "grails"之间的差异,然后是 "console"

Grails 域属性 defaultValue 未设置

grails - Grails软件包插件排除jar文件

mysql - 将复杂的 SQL 转换为 JOIN

mysql - 在 Laravel 中使用 whereHas 从子查询中选择 SUM

sql - 我可以强制mysql先执行子查询吗?

grails - 在 Grails 中,域类中是否有像 onLoad() 这样的东西?

grails - Geb-Spock使用了错误的Groovy版本

spring - 如何测试 commonsMultipartFile 文件?

validation - 将 Grails 验证代码保存在域对象中