Grails 3.1 - Не удается найти кодек для класса домена - PullRequest
0 голосов
/ 31 октября 2018

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

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 голосов
/ 20 ноября 2018

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

grails:
mongodb:
   engine: mapping

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

...