При работе через учебник, чтобы начать обучение Grails, я сделал ошибку и побежал:Grails изменение пакета для класса домена вызвало DuplicateMappingException
grails create-domain-class com.FooBar
вместо:
grails create-domain-class com.acme.FooBar
Это было сразу очевидно, что я сделал ошибку, поэтому я попробовал следующее:
- Искал функцию, которая отменяет творчество e-domain-class, кажется, что его нет.
- Искал советы в Интернете, и консенсус в том, что вы можете удалить файл класса домена, любые связанные с ним представления и тесты, а затем безопасно запускать текстовый поиск для вашего имени класса в каталоге проекта для любых ссылок, которые могут быть у вас есть. пропущенный. Я сделал все это.
- Затем я выполнил правильную команду для создания com.acme.FooBar, который работал.
После этого приложение не запускается и сообщает следующее сообщение об ошибке:
org.hibernate.DuplicateMappingException: duplicate import: FooBar refers to both com.acme.FooBar and com.FooBar (try using auto-import="false")
После добавления следующего кода com.acme.FooBar:
...
static mapping = {
autoImport false
}
...
приложение теперь работает в качестве ожидается.
Однако, как опытный разработчик Java, который иногда реорганизует пакет, я хотел бы понять, как это сделать, не вызывая исключение DuplicateMappingException или прибегая к решению «autoImport false».
Спасибо.
Я бы удалил 'autoImport' и попробовал запустить« grails clean ». –
Спасибо, Джошуа, удалил «autoImport», а затем побежал «grails clean», он сделал трюк! Я столкнулся со своей проблемой, прежде чем учебник рассмотрит эту основную команду. – Stryder