2009-08-06 1208 views
26

Estoy empezando con Groovy/Grails.Cómo puedo solucionar el error de Grails: "No se encontró ninguna clase de dominio para el nombre PrivacyOptions. Inténtalo de nuevo e ingresa un nombre de clase de dominio válido"

Agregué un nuevo controlador de dominio a mi proyecto, y no me gusta generar-controlador.

Hay otras indicaciones de que algo anda mal: si ejecuto la aplicación, no se crea ninguna tabla en la base de datos para esto.

Reduje el DomainController a un campo String y sin restricciones, solo para asegurarme de que no haya un problema con mi especificación. También intenté cambiarle el nombre, por si había algo sobre el nombre original (Privacidad) que entraba en conflicto con algo.

Estoy seguro de que tengo el nombre correcto, y que el archivo se llama PrivacyOptions.groovy y dentro de la clase también se llama PrivacyOptions.

Aquí está el error:

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 
+9

Tuve un problema similar. Necesitaba incluir el nombre del paquete al llamar a 'grails generate-all nombredepaquete.domain' –

Respuesta

59

Añadir el nombre del proyecto (también conocido como el nombre del paquete de la primera línea del archivo de modelo) antes del nombre del modelo.

grails generate-all projectname.Class 

Este es el que finalmente funcionó para mí, después de una hora de rascarse la cabeza y buscar en Google.

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

As of 1.2.2 Grails creates artifacts in packages that default to your project name - see http://jira.codehaus.org/browse/GRAILS-5713 So you'd need to run grails generate-all srapp.Srmodel - Burt

+3

esto se debe marcar como respuesta correcta. – Asaf

+0

de acuerdo con Asaf. Esta es la respuesta correcta en mi caso. =) – bungrudi

+0

esto funcionó para mí –

0

No sé cómo ha llegado a este punto, pero tal vez this le ayudará a conseguir sobre la chepa.

¿Es correcto suponer que utilizó "grails create-domain-class" para crear el objeto de dominio PrivacyOptions, y el script Groovy apareció en su directorio grails-app/domain? ¿Recibió un PrivacyOptionsTest en prueba/unidad? ¿Pasó eso? ¿Agregaste un paquete?

+0

Lo hice desde NetBeans IDE. Creo que el problema fue que cuando creé el archivo seleccioné la opción "crear una clase maravillosa" en lugar de la opción "crear una clase de dominio". Supongo que en algún lugar de algún archivo secreto de configuración hay una lista de clases que son Dominios y que create-domain-class hace el mantenimiento necesario. –

+1

Sí, create-domain-class es la clave. – duffymo

+0

El archivo Groovy simplemente tiene que estar en la carpeta grails-app/domain. No hay un archivo de configuración secreta –

10

No es projectname.Class, debe ser dirname.classname.

por ejemplo: su nombre de proyecto es Helloworld, el directorio es "grails-app/domain/helloworld/User.groovy". por lo tanto, el comando es "griales generate-all helloworld.User", pero no "Helloworld.User"

+0

+1, la sensibilidad de la caja importa en mi caso, gracias. –

3

Great help. Me enfrenté al mismo problema después de this tutorial que nombra el proyecto como "trip-planner" y Grails genera los directorios de dominio como '~/trip/planner /' en lugar de '~/trip-planner /'. Entonces el comando generate-all para una clase Trip debe ser 'grails generate-all trip.planner.Trip'

Solo en caso de que alguien agregue un caracter '-' al nombre del proyecto.

1

Sí ... trabajó para mí también. Prefijo el nombre del paquete a la clase que estaba tratando de generar, todo funcionó. Así que ...

generar todo racetrack.User

poco de un error pantalones realmente ya que todos los otros comandos griales no requieren un nombre de paquete para ser incluido :-))

0

Debe ser dirname.classname.

Si usted tiene una clase de dominio creada libro, como este 'griales-app/dominio/libro/Book.groovy'

El que debe ser: griales generan aplicación book.Book

0

Si están trabajando en Groovy/Grails Tool Suite, simplemente puede ver el nombre de dominio haciendo clic derecho en el controlador que creó, observe el caso exacto del nombre de dominio, luego haga clic derecho en vistas y genere vistas y escriba domainname.viewname

Ejemplo, su nombre de controlador es RegistrationController y el nombre de dominio es helloworld, puede hacer clic derecho en las vistas y en el gen ver el cuadro de diálogo de visitas, ingrese el valor como helloworld.Registro

Cuestiones relacionadas