2

我正在尝试使用 gorm 和 mongodb 插件创建和保存域对象,但我总是在嵌入式属性(“emailTemplates”)上遇到类型不匹配错误。

我的域定义为:

import org.apache.commons.mail.Email
import org.bson.types.ObjectId

class EmailTemplate {

    ObjectId id
    String subject
    String message
    String locale
    String from
    List<String> to
    List<String> cc
    List<String> bcc

    static mapWith = "mongo"

    static constraints = {
        subject(blank: false, maxSize: 78)
        message(blank: false)
        locale(blank: false)
    }

    static mapping = {
        locale defaultValue: "en_US"
    }
}

class Template {

    ObjectId id
    String namespace
    String name
    String description
    String defaultLocale
    Boolean enabled
    List emailTemplates

    static mapWith = "mongo"
    static hasMany = [emailTemplates: EmailTemplate]
    static embedded = ["emailTemplates"]
    static constraints = {
        name(unique: ['namespace'], blank: false, maxSize: 250)
        description(blank: true)
        enabled(blank: false)
        namespace(blank: false)
        defaultLocale(blank: false)
    }
    static mapping = {
        id attr: "_id"
        defaultLocale defaultValue: "en_US"
        enabled defaultValue: true
    }

}

我的 POST 有效负载 json 是:

{
  "namespace": "some namespave",
  "emailTemplates": [
    {
      "locale": "en_US",
      "from": "xyz@gmail.com",
      "message": "test",
      "subject": "test"
    }
  ],
  "name": "a name",
  "defaultLocale": "en_US",
  "enabled": true,
  "description": "test"
}

现在我确实有一个解决方法,我覆盖控制器上的“保存”方法(它扩展了 RestfulController)并手动实例化域对象,但我宁愿让默认的“RestfulController”工作。

我正在使用 mongodb 插件版本 6.1.0,mongodb-driver:3.4.2,我的 grails 版本是 3.2.8

4

0 回答 0