Grails 3.1 - не удается найти кодек для доменного класса

Я не могу преобразовать доменный класс в базовый объект БД. Ниже мой код:

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

1
0
179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил это. Добавьте ниже решение в Application.yml

grails:
mongodb:
   engine: mapping

Он преобразует MongoCodecSession в предыдущий MongoSession. Как и в кодеках, объекты больше не преобразуются сначала в объекты MongoDB Document, а затем в объекты Groovy, вместо этого драйвер считывает объекты Groovy непосредственно из потока JSON на уровне драйвера, что намного эффективнее, чем предыдущий MongoSession.

Другие вопросы по теме