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