2009-04-21 9 views
0

je la classe java suivante:Groovy + JPA + printemps ne fonctionne pas

package domain; 

//imports 

@Entity 
public class User { 

    @Id @GeneratedValue 
    private long id; 

    private String name; 
    private String password; 
    private String mail; 
    //Getters, Setters and Constructors 
} 

Quand je change l'extension de fichier à .groovy, l'application cesse de fonctionner. En fait, il jette cette stacktrace:

org.springframework.dao.InvalidDataAccessApiUsageException: entité inconnue: domain.User; imbriqué exception est java.lang.IllegalArgumentException: entité inconnue: domain.User

Je lis this book et l'auteur affirme que toute la classe groovy peut prendre la place d'une classe java juste changer son extension. Alors, pourquoi Spring et JPA ne reconnaissent pas ma classe groovy?

Est-ce que quelqu'un a utilisé cette technologie avec succès?

Répondre

2

Il n'y a pas beaucoup d'informations ici, donc le temps de deviner.

On dirait que Spring ne trouve pas le fichier User.class. Les compilateurs Groovy et Java peuvent avoir des chemins de sortie différents et le chemin de sortie Groovy peut ne pas être dans votre chemin de classe ou votre ensemble de déploiement.

Vérifiez votre War, est User.class dedans? Est-ce dans WEB-INF/classes/domain? Si ce n'est pas le cas, le dossier de sortie Groovy ne semble pas être dans votre déploiement. Essayez de modifier le dossier de sortie Groovy pour qu'il corresponde à votre dossier de sortie Java.

0

Les fichiers sources Groovy (.groovy) et Java (.java) seront compilés en fichiers bytecode (.class). Il n'y a pas de changement de nom de fichier nécessaire.

Si vous avez du code groovy, vous devez utiliser le compilateur groovy pour générer un fichier .class, un peu comme un fichier .java va générer un fichier .class avec javac.

Cela ne semble pas être un problème JPA ou Spring.

+0

Il semble de le compiler car la classe qui utilise le User.groovy, compile proprement. Je dois changer l'extension du fichier source si je passe de java à groovy autant que je sache. –

+1

Vraiment, Rob disait simplement que changer l'extension n'était pas pertinent (bien que nécessaire), puisque Spring utiliserait le résultat compilé (fichier .class dans les deux cas). – billjamesdev