Подтвердить что ты не робот

Как исправить ошибку Grails: "Класс домена не найден для имени PrivacyOptions. Повторите попытку и введите допустимое имя класса домена"

Я только начинаю с Groovy/Grails.

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

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

Я сократил DomainController до одного поля String и никаких ограничений, просто чтобы убедиться, что с моей спецификацией не было ничего плохого. Я также попробовал переименовать его, на всякий случай, что было что-то об исходном имени (Privacy), которое противоречило чему-то.

Я уверен, что у меня есть правильное имя и что файл называется PrivacyOptions.groovy, а внутри класса также называется PrivacyOptions.

Здесь ошибка:

Running script /opt/local/grails/scripts/GenerateController.groovy
Environment set to development
Domain class not found in grails-app/domain, trying hibernate mapped classes...
No domain class found for name PrivacyOptions. Please try again and enter a valid domain class name
4b9b3361

Ответ 1

Добавьте имя проекта (ака имя пакета из первой строки файла модели) перед именем модели.

grails generate-all projectname.Class

Это тот, который, наконец, работал на меня, после часа царапин и гуглинга.

ref: http://grails.1312388.n4.nabble.com/Generate-Scaffold-Scripts-Don-t-Work-Getting-No-domain-class-found-Error-td2017858.html#a2017880

Начиная с 1.2.2. Grails создает артефакты в пакетах, которые по умолчанию соответствуют вашим название проекта - см. http://jira.codehaus.org/browse/GRAILS-5713Поэтому вам нужно запустить grails generate-all srapp.Srmodel- Берт

Ответ 2

it not projectname.Class, он должен быть dirname.classname.

например: ваше имя проекта - Helloworld, каталог - "grails-app/domain/helloworld/User.groovy". поэтому команда "grails generate-all helloworld.User", но не "Helloworld.User"

Ответ 4

Отличная помощь. Я столкнулся с такой же проблемой после этого учебника, который называет проект "Trip-Planner", а Grails генерирует каталоги домена как "~/trip/planner/'вместо' ~/trip-plananner/'. Затем команда generate-all для класса Trip должна быть" grails generate-all trip.planner.Trip"

На всякий случай кто-то добавляет символ "-" к имени проекта.

Ответ 5

Да, я тоже работал на меня. Я просто префикс имени пакета в класс, который я пытался сгенерировать, - все это и работало. Итак...

генерировать все racetrack.User

Бит из-за ошибки штанов, так как все другие команды grails не требуют включения имени пакета: -))

Ответ 6

Я не знаю, как вы дошли до этого момента, но, возможно, это поможет вам преодолеть горб.

Можно ли предположить, что вы использовали "grails create-domain-class" для создания объекта домена PrivacyOptions, а Groovy script появился в вашем каталоге grails-app/domain? Получили ли вы тест PrivacyOptionsTests в тесте/подразделении? Прошло ли это? Вы добавили пакет?

Ответ 8

generate-all Имя домена не будет работать, так как требуется полное имя пакета. Я стараюсь добавить * в первый раз, а затем вы увидите, что класс домена должен выглядеть для других вызовов.

generate-all *

http://grails.org/doc/latest/ref/Command%20Line/generate-all.html

Ответ 9

Он должен быть dirname.classname.

Если у вас есть класс, созданный классом, например "grails-app/domain/book/Book.groovy"

Это должно быть: grails generate-app book.Book

Ответ 10

Если вы работаете над Groovy/Grails Tool Suite, вы можете просто увидеть доменное имя, щелкнув правой кнопкой мыши на созданном контроллере, узнать точное имя для имени домена, затем щелкнуть правой кнопкой мыши по просмотрам и сгенерировать представления и введите имя домена .viewname

Например, ваше имя контроллера - RegistrationController, а доменное имя - helloworld, вы можете щелкнуть правой кнопкой мыши по представлениям и в диалоговом окне создания представлений, ввести значение как helloworld.Registration