Я использую библиотеку Spring LDAP (docs) в Grails. применение. У меня есть класс с аннотацией @Entry, поэтому он сопоставлен с сервером LDAP. Все это работает довольно красиво.
Однако, когда я добавляю аннотацию Grails @Validateable (чтобы включить проверку класса LDAP аналогично классам домена Grails) и пытаюсь получить данные из LDAP (т.е. операция findAll в LdapUserRepo или аналогичная), я получаю следующее исключение: Сообщение : Отсутствует преобразователь из класса java.lang.String в интерфейс org.springframework.validation.Errors, это необходимо для ошибок поля в классе Entry com.ldap.portal.LdapUser
По сути, похоже, что преобразование AST, выполняемое аннотацией @Validateable, создает дополнительные поля (а именно поле ошибок) в объекте LdapUser. Похоже, что Spring LDAP при обработке логики @Entry предполагает сопоставление по умолчанию для свойства fields (вероятно, интерпретируя его как строковое поле в объекте LDAP). Когда он ничего не получает от сервера LDAP, он пытается установить в поле типа ValidationErrors значение типа String — пустую строку.
Я немного поискал в github и нашел этот код кажется актуальным и может подтвердить мою теорию.
Мой вопрос: ожидается ли такое поведение для аннотаций, и как можно предотвратить неправильную обработку полей, добавленных одной аннотацией, другой аннотацией?