我关注Grails 2.4.4 documentation to make a Map of Objects,但我的对象没有被持久化到Mongo DB。因此,我决定使用文档提供的完全相同的示例进行完整性检查,但它也不起作用。
步骤:
grails create-app test
接下来,我将mongo插件包含在我的BuilConfig.groovy中:
compile ":mongodb:3.0.3"
//runtime ":hibernate4:4.3.6.1"
然后,我配置了DataSource.groovy:
environments {
production {
grails {
mongo {
replicaSet = [ "xxxxxxxx"]
username = "xxxx"
password= "xxxxxxxxxxxxxx"
databaseName = "xxxxxx"
}
}
}
development {
grails {
mongo {
replicaSet = [ "xxxxxxxx"]
username = "xxxx"
password= "xxxxxxxxxxxxxx"
databaseName = "xxxxxx"
}
}
}
test {
grails {
mongo {
replicaSet = [ "xxxxxxxx"]
username = "xxxx"
password= "xxxxxxxxxxxxxx"
databaseName = "xxxxxx"
}
}
}
}
这是我的Book域类:
package test
class Book {
String name
Map authors
static hasMany = [authors:Author]
static constraints = {
}
}
这是我的作者域类:
package test
class Author {
String name
static constraints = {
}
}
使用grails控制台,我运行了以下脚本:
import test.*
def a = new Author(name:"Stephen King")
def book = new Book(name:"test")
book.authors = ["stephen":a]
book.save(failOnError:true)
然后,我看了一下我的Mongo数据库,我找不到应该保留的地图。
{
"_id": 1,
"name": "test",
"version": 0
}
如果您有任何线索,或者您知道在Grails中保留Map
的任何解决方法,我真的很感激。
由于
答案 0 :(得分:1)
你走了。将以下内容添加到您的Book
域类:
static embedded = ["authors"]
关于第二个想法,为什么你使用Map
代替List
authors
?
由于这是一个MongoDB数据库,它将保存Author
的所有字段。