Как я могу исправить ошибку Grails: «Не найден класс домена для имени PrivacyOptions. Пожалуйста, попробуйте еще раз и введите правильное имя класса домена» - PullRequest
26 голосов
/ 07 августа 2009

Я только начинаю работать с 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

Ответы [ 10 ]

60 голосов
/ 25 мая 2010

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

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 - Берт

10 голосов
/ 27 августа 2010

это не имя проекта. Класс, это должно быть dirname.classname.

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

8 голосов
/ 25 мая 2010

Пробег:

grails clean

и затем повторите команду generate-all.

ref: http://parasjain.net/2009/06/23/grails-no-domain-class-found-for-name-please-try-again-and-enter-a-valid-domain-class-name/

3 голосов
/ 04 ноября 2010

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

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

1 голос
/ 14 декабря 2010

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

генерировать все ипподром. Использование

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

0 голосов
/ 05 июня 2014

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

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

0 голосов
/ 23 августа 2013

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

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

Так и должно быть: grails generate-app book. Книга

0 голосов
/ 04 декабря 2012

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

generate-all *

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

0 голосов
/ 25 мая 2010

связанная проблема, связанная с отсутствием свойств трассировки стека:

http://jira.codehaus.org/browse/GRAILS-1607

0 голосов
/ 07 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...