【问题标题】:No such property: INTEGER for class: grails.orm.HibernateCriteriaBuilder没有这样的属性:INTEGER 类:grails.orm.HibernateCriteriaBuilder
【发布时间】:2013-01-16 08:14:38
【问题描述】:

一个查询的组成如下:

def subQuery = {
    ge("date", fromDate)
}

def query = {
    projections {
        sqlProjection 'sum(hoursBefore+hoursAfter) as totalHours', 'totalHours', INTEGER
    }
    and subQuery
}

然后执行如下:

def results = WorkLog.createCriteria().get(query)

我得到错误:

没有这样的属性:INTEGER 用于类: grails.orm.HibernateCriteriaBuilder

知道如何解决这个问题吗?

【问题讨论】:

  • 你试过java.lang.Integer吗?
  • 算了。无效的评论。它应该与 INTEGER 一起使用。 ================================================== =========================== 你有没有直接尝试过WorkLog.withCriteria?
  • 尝试类似:====================================== ======================================== def results = WorkLog.withCriteria { projections { Projections. sqlProjection('sum(hoursBefore+hoursAfter) as totalHours', ["totalHours"].toArray(new String[1]), [Hibernate.INTEGER].toArray(new org.hibernate.type.Type[1]) ) }和子查询}
  • 尝试省略projections{},我遇到了与sqlProjection类似的问题,并尝试明确写出完整的包名grails.orm.HibernateCriteriaBuilder.INTEGER(或org.hibernate.type.StandardBasicTypes .INTEGER 在某些 grails 版本中)

标签: hibernate grails grails-orm hibernate-criteria


【解决方案1】:

我遇到了与我设置尝试此操作的新项目相同的错误。出于某种奇怪的原因,无法用这种方法修复错误。这可能是 Hibernate 版本问题或 grails 不支持该语法。

这是一个在测试中有效的解决方法:

def results = WorkLog.createCriteria().list {
        projections {
            addProjectionToList(Projections.sqlProjection(
                'sum(hours_before+hours_after) as totalHours', ["totalHours"].toArray(new String[1]), [Hibernate.INTEGER].toArray(new org.hibernate.type.Type[1])
                ),'sum')
        }
        and subQuery
    }

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多