【问题标题】:Retrieving data using Grails Domain returns with a Class Key by default使用 Grails 域检索数据默认返回一个类键
【发布时间】:2015-06-09 01:44:18
【问题描述】:

我正在使用 Grails 查询服务,我正在使用这些 code blocks 通过 domain 类检索数据库行。

adjustmentCodeList = AdjustmentCode.findAll {
   or {
      ilike('description', "%$filterText%")
      like('id', "%$filterText%")
   }                  
}

adjustmentCodeList = AdjustmentCode.list()

adjustmentCodeList = AdjustmentCode.list(max: count, offset: from)

它确实很好工作,但有一个小问题。它返回以下list(省略了一些敏感的data):

[
   {
      "class": "rvms.maintenance.AdjustmentCode",
      "id": ...,
      "description": ...,
      "lastUpdateBy": ...,
      "lastUpdateDate": ...,
      "status": ...,
      "statusDate": ...,
      "type": ...
   },
   {
      "class": "rvms.maintenance.AdjustmentCode",
      "id": ...,
      "description": ...,
      "lastUpdateBy": ...,
      "lastUpdateDate": ...,
      "status": ...,
      "statusDate": ...,
      "type": ...
   },
    ...
   {
      "class": "rvms.maintenance.AdjustmentCode",
      "id": ...,
      "description": ...,
      "lastUpdateBy": ...,
      "lastUpdateDate": ...,
      "status": ...,
      "statusDate": ...,
      "type": ...
   }
]

它包括domain class name。如何使用某些配置删除 class 键?我当前的解决方案是通过在循环中迭代它来手动从列表中删除 class 键,一次删除该键。但也许……还有另一种Grails-ly 方式。

如果你想看到domain,它看起来像这样:

package rvms.maintenance

import grails.util.Holders
import groovy.sql.Sql
import oracle.jdbc.OracleTypes
import java.sql.Connection

class AdjustmentCode implements Serializable {
   String id
   String description
   String type
   String status
   Date statusDate
   String lastUpdateBy
   Date lastUpdateDate

   static mapping = {
      table '...'
      version false
      id column : '...'
      description column : '...'
      type column : '...'
      status column : '...'
      statusDate column : '...'
      lastUpdateBy column : '...'
      lastUpdateDate column : '...'
   }

   Map getAdjustmentCodeValues() {
      Map values = [];
      values << [id: this.getId()]
      values << [description: this.getDescription()]
      values << [type: this.getType()]
      values << [status: this.getStatus()]
      values << [statusDate: this.getStatusDate()]
      values << [lastUpdateBy: this.getLastUpdateBy()]
      values << [lastUpdateDate: this.getLastUpdateDate()]

      return values
   }
}

【问题讨论】:

    标签: grails grails-orm


    【解决方案1】:

    实现这一点的 Grails 方法是自定义编组器。我已经在this answer 中解释了如何使用命名编组器执行此操作,并且相同的概念也适用于您的案例(减去命名部分)。

    【讨论】:

    • 就像您在回答中所说的那样,这确实矫枉过正...也许其他一些直截了当的方法?虽然如果没有,我会使用你的解决方案。
    • 这是在 Grails 中自定义域实例如何编组为 JSON 的方法。还不错,真的,一旦你做了,它就完成了。
    猜你喜欢
    • 2012-05-14
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多