Плагин Gorm MongoDB, сохраняющий идентификатор объекта jvm вместо данных массива байтов

Когда я пытаюсь сохранить массив байтов как поле класса домена в приложении Grails, результирующей записью в базе данных mongo является идентификатор объекта массива байтов вместо объекта BinData, который я ожидал.

Пример:

class SimpleDomainClass {
    byte[] filed = ['d', 'w', 1, 5, 'r']
}

Результаты в Mongo DB:

{"field" : "[B@29edc561"}

Я бы ожидал чего-то большего, например:

{"field" : BinData(0,"blahblahblah")}

В документах драйвера mongo-java четко указано, что это должно храниться как двоичный файл. object, и он работает у нас над аналогичным проектом с аналогичной конфигурацией.

Кто-нибудь знает, в чем здесь может быть проблема?

Версии библиотеки:

  • Грааль 2.1.0
  • плагины.mongodb=1.1.0.GA
  • монго-java-драйвер 2.10.1

person Dónal Boyle    schedule 29.01.2013    source источник


Ответы (1)


Вы абсолютно правы, в документации сказано, что это должно работать. В плагине 1.1.0.GA mongodb есть ошибка GPMONGODB-265, из-за которой возникает ошибка сохранения массивов.

Та же проблема обсуждалась: Grails - Mongo: хранение изображений в виде массива байтов

Однако, поскольку вы используете grails 2.1.0, у вас есть изменение для понижения версии плагина mongo gorm до версии 1.0.0.GA, массивы сохраняются там правильно.

person jozh    schedule 29.01.2013
comment
Спасибо. Я работал над проблемой, кодируя строку base 64. Это не идеально, поэтому, как только у меня появится шанс, я попробую понизить версию плагина. - person Dónal Boyle; 31.01.2013