gpt4 book ai didi

mongodb - grails 应用程序中的 mondogb-morphia 问题,无法将 Map 正确存储在数据库中

转载 作者:行者123 更新时间:2023-12-02 14:54:47 25 4
gpt4 key购买 nike

我在 grails (2.0.3) 应用程序中使用插件 mongodb-morphia (0.7.8) 并尝试使用 Map 类型的问题。
我想在我的数据库中存储一个 Map 类型的 map ,但是当我把它放在我的 groovy 文件中时:

class ServiceInfo {

String name

Map<String,?> args

Date dateCreated // autoset by plugin
Date lastUpdated // autoset by plugin

static constraints = {
name nullable:false
}
}

我收到以下错误:

2012-04-29 14:39:43,876 [pool-2-thread-3] ERROR MongodbMorphiaGrailsPlugin - Error processing mongodb domain Artefact > fr.unice.i3s.modalis.yourcast.provider.groovy.ServiceInfo: Unknown type... pretty bad... call for help, wave your hands... yeah!



我试图在我的文件中指定 Map :
Map args

在这种情况下,我会收到以下简单警告:

INFO: MapKeyDifferentFromString complained about fr.unice.i3s.modalis.yourcast.provider.groovy.ServiceInfo.args : Maps cannot be keyed by Object (Map); Use a parametrized type that is supported (Map)



当我尝试保存一个对象时,属性 args 在数据库中被简单地省略了。
有关信息,我的对象具有这种表示形式:
def icalReader= new ServiceInfo(name:"IcalReader", args:['uri':DEFAULT_URL, 'path':"fr.unice.i3s.modalis.yourcast.sources.calendar.icalreader/"])
icalReader.save()

最后,如果我只是说 args 是一个 List:
List args

我将我的对象更改为只包含一个 map 的列表,我只是有一个警告:

ATTENTION: The multi-valued field 'fr.unice.i3s.modalis.yourcast.provider.groovy.ServiceInfo.args' is a possible heterogenous collection. It cannot be verified. Please declare a valid type to get rid of this warning. null



但一切正常,我的地​​图已正确存储在数据库中:

{ "_id" : ObjectId("4f9be39f0364bf4002cd48ad"), "name" : "IcalReader", "args" : [ { "path" : "fr.unice.i3s.modalis.yourcast.sources.calendar.icalreader/", "uri" : "http://localhost:8080/" } ], "dateCreated" : ISODate("2012-04-28T12:33:35.838Z"), "lastUpdated" : ISODate("2012-04-28T12:33:35.838Z") }



那么在定义我的 map 时有什么我忘记的吗?
我的服务确实有效,但我不喜欢“将 map 封装在列表中以对其进行序列化”之类的技巧;)

最佳答案

我不知道 map ,但你可以使用嵌入式数据模型吗?

class ServiceInfo {
...
@Embedded
MyArgs args
...
}
class MyArgs {
String key
String value
}

关于mongodb - grails 应用程序中的 mondogb-morphia 问题,无法将 Map 正确存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com