Grails 3.1 - 找不到域 class 的编解码器

Grails 3.1 - Can't find codec for domain class

我无法将域 class 转换为基本数据库对象。 下面是我的代码:

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 函数下方,出现错误:"Can't find a codec for class class.domain"。 updateVal 作为域 Class 对象返回。

ClassName.class.findOneAndUpdate(new BasicDBObject(findVal), new BasicDBObject(updateval))

我正在将它从 Grails 3.0 转换到 Grails 3.1,这里 nativeEntry 作为域返回 class 而在以前的版本中,nativeEntry 作为 BasicDBObject 返回。 任何解决方案? 我将 Grails 3.1 与 gorm 5.0 和 mongodb 3.4

一起使用

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

grails:
mongodb:
   engine: mapping

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