mongodb - 使用 GORM MongoDB 保留动态 groovy 属性

标签 mongodb grails dynamic properties groovy

我目前正在尝试使用 grails 的 GORM MongoDB 插件保留以下类:

class Result {

    String url

    def Result(){

    }


    static constraints = {
    }

    static mapWith="mongo"

    static mapping = {
        collection "results"
        database "crawl"
    }
}

我运行来保留此类的代码如下:

class ResultIntegrationTests {

    @Before
    void setUp() {

    }

    @After
    void tearDown() {

    }

    @Test
    void testSomething() {
        Result r = new Result();

        r.setUrl("http://heise.de")

        r.getMetaClass().setProperty("title", "This is how it ends!")

        println(r.getTitle())

        r.save(flush:true)
    }
}

这是 MongoDB 中的结果:

{ "_id" : NumberLong(1), "url" : "http://heise.de", "version" : 0 }#

现在,url 已正确保留在 MongoDB 中,但映射器在某种程度上看不到动态属性 - 尽管 println(r.getTitle()) 工作得很好。

我是 groovy 的新手,所以我认为有更多经验的人可以帮助我解决这个问题。有没有办法使这个动态添加的属性对映射工具可见?如果是的话我该怎么做?

非常感谢您的建议...

最佳答案

与其向元类添加随机属性并希望 Grails 扫描元类以查找随机属性然后保留它们,为什么不直接向您的域类添加一个 Map(或一个新的键/值域类)其 Result 可以 hasMany),因此您可以根据需要向其添加随机额外属性。

关于mongodb - 使用 GORM MongoDB 保留动态 groovy 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445063/

相关文章:

mysql - 使用 2 台 MySQL 服务器

MongoDB 聚合错误 "each item in the pipeline must be a document"

node.js - 连接到 MongoDb Atlas 服务器时出错

javascript - 连续或无限滚动,接近页面底部时加载更多内容

grails - 在grails中传递 boolean 值而不是 boolean 值

grails - Groovy脚本-未完成Logback配置的行为

XML 动态对象和 IEnumberables

c++ - MongoDB 和 Visual C++ 2008 链接器错误

node.js - 从不同的地理位置访问快速服务器

javascript - 在选择时使用参数触发完整日历刷新