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

时间:2018-10-31 13:05:39

标签: mongodb grails gorm grails-3.1 gorm-mongodb

我无法将域类转换为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

1 个答案:

答案 0 :(得分:0)

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

grails:
mongodb:
   engine: mapping

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