Grails 2.4.4对象的映射示例未持久保存到Mongo DB

时间:2016-07-28 21:46:02

标签: mongodb grails gorm grails-2.4

我关注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的任何解决方法,我真的很感激。

由于

1 个答案:

答案 0 :(得分:1)

你走了。将以下内容添加到您的Book域类:

static embedded = ["authors"]

关于第二个想法,为什么你使用Map代替List authors

由于这是一个MongoDB数据库,它将保存Author的所有字段。