GORM (Hibernate) пытается сопоставить не доменные классы; дает DuplicateMappingException

Я обновляю свое приложение Grails с версии 2.1.0. До этого обновления приложение работало нормально. Я загрузил и настроил новую версию Grails (сначала я пробовал версию 2.2.1, но сегодня попытался перейти на 2.2.2) и обновил Grails в своем приложении.

После этого обновления мое приложение не запускается, ссылаясь на исключение DuplicateMappingException.

DuplicateMappingException: duplicate import: User refers to both com.mycompany.myapp.User and net.security.User (try using auto-import="false")

or

DuplicateMappingException: duplicate import: Role refers to both net.security.Role and com.mycompany.myapp.Role (try using auto-import="false")

Поэтому мне кажется, что GORM по какой-то причине считает необходимым сопоставить эти net.security классы с базой данных.

Role и User — это доменные классы, которые я использую с подключаемым модулем безопасности Shiro для Grails.

Я попытался добавить autoImport false в блок сопоставления в своих классах домена. Это вызвало проблемы в других частях системы, где используются User или Role. Я не стал заниматься этим дальше, потому что уверен, что здесь не должно быть конфликта.

Поэтому я ищу, есть ли у кого-нибудь идеи, что может быть причиной этого, или что-то, что я мог бы попытаться исправить.

К вашему сведению, я пробовал использовать Grails в проекте.

Спасибо


person David    schedule 19.05.2013    source источник


Ответы (1)


Итак, проблема в том, что классы net.security не являются случайными классами, как я думал. net.security — это пакет по умолчанию для классов подключаемых модулей Shiro OpenID. Поэтому ранее в проекте мы добавили классы User и Role с нашим собственным пакетом вместо использования тех, которые поставлялись с плагином Shiro OpenID. В этот момент мы должны были удалить соответствующие классы из каталогов grails-app и src/groovy/net/security в каталоге .grails/<version>/projects/<project>/plugins/shiro-openid-0.5. Когда я обновился до Grails 2.2.2, плагин воссоздал эти файлы, и они конфликтуют с файлами в нашем проекте.

На данный момент я удалил эти файлы классов вручную, но, возможно, есть способ удалить их автоматически в BuildConfig.groovy? Хотя это проблема другого дня.

person David    schedule 26.05.2013