GWT avec JPA
Je suis en train de construire la base de données de l'application en utilisant GWT 1.5.3. J'utilise les annotations JPA avec mes objets. Il semble en mode hébergé GWT du RPC fonctionne très bien. Mais lorsque j'essaie de compiler mon application en utilisant GWT-compilateur j'ai des erreurs comme: "L'import javax.la persistance ne peut pas être résolu", "Entité ne peut pas être résolu à un type". toplink-essentials.jar est déjà inclus dans mon dossier de projet. Quels paramètres dois-je résoudre ce problème?
source d'informationauteur synergetic
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser Gilead (http://sourceforge.net/projects/gilead/) de la bibliothèque de gérer de manière transparente des entités JPA avec GWT.
Ce qui concerne
Vous devez inclure le code source pour les annotations JPA dans le build path pour votre projet GWT. Voir ici pour plus de détails:
http://code.google.com/p/google-web-toolkit/issues/detail?id=1830&can=1&q=jpa
Précisément ce fichier jar qui va résoudre votre problème:
http://google-web-toolkit.googlecode.com/issues/attachment?aid=1475633892125294312&name=jpa-annotations-source.jar
Le problème général de la JPA et GWT est que GWT lui-même ne prend pas en charge fantaisie JPA classes, de sorte que vous venez de faire simple POJO les entités persistantes DTO qui implémente java.io.Serializable et simple, JPA ressources annotations. Vous devez créer les classes d'entité dans le champ d'application de l'GWT client soit à l'avoir sous la votreprojet.package client ou d'ajouter avec
chemin de la source="client"
chemin de la source="folderOfYourEntities"
dans les GWT du projet YouProject.gwt.xml fichier. Cela inclura les objets de l'entité dans le GWT client de sorte qu'ils peuvent être utilisés sur côté client de la RPC. Le DAO doit être sur le côté serveur et peuvent contenir tout ce que vous conteneur prend en charge.
Le problème que vous avez maintenant, c'est que lors de la compilation, le compilateur GWT saids qu'il desn sais pas ce que ces importations de JPA annonations sont dans l'entité DTO classes. C'est pourquoi vous avez besoin de la javax.la persistance de la classe et les codes source. L'jpa-annotation-source.jar de référence par Rustmyself œuvres. C'est juste le javax.la persistance classe compilée les fichiers et les codes source des fichiers de plus d'un Persistence.gwt.xml. C'est un simple module GWT pour la javax.la persistance de package. Si vous savez comment faire votre propre module GWT, vous devriez avoir de problème à faire tout ce travail. Par ailleurs, la source officielle pour le Java EE peuvent être trouvés sur le glassfish dev de site de construction de la section wiki.glassfish.java.net
Il existe de nombreuses autres solutions que l'enveloppe de votre fantaisie PU entités à de simples objets automatiquement en utilisant un proxy ou différé charge au moment de l'exécution. Ils travaillent, mais pas de solution optimale. La meilleure pratique est de rendre les choses simples et robustes à partir du début des POJO JPA DTO entités sur le GWT contexte du client et complet de DAO sur le serveur.
GWTPersistence Exemple
J'ai ajouté un exemple réel sur la façon de faire de GWT et JPA travailler de façon transparente. C'est un NetBean projet avec les codes source et le fichier de déploiement de. Voir GWTPersistence sur NingZhang.info
Ok, j'ai trouvé ce qui me manquait. J'avais besoin d'inclure jpa-annotations-source.jar dans mon GWT-le chemin du compilateur dans myapp-compiler.cmd script (ou dans le fichier ant). Par la façon dont quelqu'un peut me dire l'origine de cette jpa-annotations-source.jar fichier?
Je travaille aussi avec JPA <--> GWT de transformation de données, etc.
Dans un effort pour éliminer la DTO couche j'ai utilisé Gilead trop.
Mon objection est ici sur la traduction de javax.la persistance. Pour éviter cela, j'ai utilisé XML JPA (déclarations de orm.xml)
Simplement, garder une autre version de vos Entités, mais sans les annotations!
De rebondir sur la synergie du commentaire, à vous maintenant (à partir de GWT 1.5) seulement besoin d'ajouter
à votre Module.gwt.xml