我无法将域类转换为Basic DB对象。 下面是我的代码:
def update_val
class_object.class.withNewSession { MongoCodecSession m ->
update_val = m.pendingUpdates.find {
it.key.name == d.class.getName()
}.value[0]nativeEntry.regions[0]."${instance.getDbKey()}"[0]
}
在findOneAndUpdate函数下面,出现错误:“找不到类class.domain的编解码器”。 updateVal作为域类对象返回。
ClassName.class.findOneAndUpdate(new BasicDBObject(findVal), new BasicDBObject(updateval))
我将其从Grails 3.0转换为Grails 3.1,此处nativeEntry作为域类返回,而在先前版本中,nativeEntry作为BasicDBObject返回。 有什么办法吗? 我正在使用带有gorm 5.0和mongodb 3.4的Grails 3.1
答案 0 :(得分:0)
我已经解决了。将以下解决方案添加到Application.yml
grails:
mongodb:
engine: mapping
它将MongoCodecSession转换为先前的MongoSession。 像在编解码器中一样,不再将对象首先转换为MongoDB Document对象,然后再转换为Groovy对象,而是驱动程序直接在驱动程序级别从JSON流读取Groovy对象,这比以前的MongoSession效率要高得多。