我正在尝试使用 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