1

我无法将域类转换为基本 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 返回。有什么解决办法吗?我将 Grails 3.1 与 gorm 5.0 和 mongodb 3.4 一起使用

4

1 回答 1

0

我已经解决了。将以下解决方案添加到 Application.yml

grails:
mongodb:
   engine: mapping

它将 MongoCodecSession 转换为之前的 MongoSession。与编解码器一样,对象不再先转换为 MongoDB Document 对象,然后再转换为 Groovy 对象,而是驱动程序直接从驱动程序级别的 JSON 流中读取 Groovy 对象,这比之前的 MongoSession 效率高得多。

于 2018-11-20T05:32:51.997 回答