Разница в результатах критериев в mongodb & hibernate

Мы используем mongodb в нашем приложении Grails 2.3.5 без спящего режима. При использовании проекции в критериях с минимум двумя полями возвращаемый результат отличается от возвращенного в критериях гибернации. Например:

List usersList = User.withCriteria {
    projections {
        id()                          // For mongodb
        //property("id")              // For hibernate
        property('name', 'fullName')
    }
    def now = new Date()
    between('joinDate', now-365, now)
    maxResults(2)
}

Учитывая, что возвращаются два экземпляра, соответствующие вышеуказанным критериям:

Результат, возвращаемый при использовании mongodb, будет:

[[1, 2], ['XYZ', 'ABC']]

Пока возвращаемый результат при использовании hibernate будет:

[[1, 'XYZ'], [2, 'ABC']]

Я не уверен, что это из-за реализации или это ошибка.

Благодарю вас,

SA

1 ответ

Решение

Какая версия плагина MongoDB? Это была ошибка в прошлом, но была исправлена ​​см.

https://github.com/grails/grails-data-mapping/blob/master/grails-datastore-gorm-mongodb/src/test/groovy/org/grails/datastore/gorm/mongo/ProjectionsSpec.groovy

который проверяет правильность поведения

Проблема https://jira.grails.org/browse/GPMONGODB-294 была исправлена ​​в версии 3.0.0 плагина

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