Comment modifier une entité existante générée avec jhipster?
j'utilise jhipster generator pour créer un projet. J'ai généré une entité manuellement en suivant les informations fournies dans jhipster documentation:
si vous préférez (ou si vous avez besoin) de faire une mise à jour manuelle de la base de données, voici le flux de développement: de la relation, etc.) Créer un nouveau" journal de modification " dans votre src/main/resources/config/liquibase / changelog directory. Les fichiers dans ce répertoire est préfixé par leur date de création (en aaaammjjhhmmss) ils ont ensuite un titre décrivant ce qu'ils font. Exemple, 20141006152300_added_price_to_product.xml est un bon nom. Ajouter cette "change log" dans votre fichier src/main/resources/config/liquibase / master.fichier xml, donc il est appliqué la prochaine fois que vous exécutez votre application Si vous souhaitez plus d'informations sur à l'aide de Liquibase, s'il vous plaît aller à http://www.liquibase.org.
ici, la documentation ne fait que mentionner, comment ajouter!!! Que faire si je souhaite supprimer un champ ou une relation entre entités (entité jpa) ?
Merci
5 réponses
1) éditer le fichier JSON représentant votre entité (ajouter/supprimer le champ, la syntaxe est assez facile, vérifier à la fin du fichier SI est nécessaire toute modification aux propriétés générales de l'entité comme "fieldsContainOneToMany"...), vous le trouverez dans:
<jhipster_root_folder>/.jhipster/entityName.json
2) construisez le code.
3) à la racine de votre projet, lancez la commande:
yo jhipster:entity entityName
NOTE: Cette commande par défaut remplace toutes vos modifications manuelles. Je recommande de faire une commit sur un dépôt VCS avant d'exécuter cette commande pour éventuellement revenir sur un changement non requis.
4) run
mvn liquibase:diff
j'ai la solution a fonctionné pour jhipster 3.4.2, il est le résultat de moi en 1 jour, j'espère qu'elle vous aider :)
- Exécuter
yo jhipster:entity entityName
- Modifier les entités (ajouter, supprimer ...), à la fin, jhipster donnera question de remplacer le fichier,
*NOTE IMPORTANTE: sélectionner Non
changelog .xml
etnavbar.html
fichier. - retourner au projet et exécuter
mvn compile liquibase:diff
- lancez votre application
Dans la même page, vous pouvez voir cette phrase:
si vous avez choisi D'utiliser MySQL ou Postgresql en développement, vous pouvez utiliser le mvn liquibase:diff goal pour générer automatiquement un changelog.
Liquibase Hibernate est un plugin Maven configuré dans votre pom.xml, et est indépendant de votre application Spring.fichier yml, donc si vous avez changé les paramètres par défaut (par exemple, changé le mot de passe de la base de données), vous devez modifier les deux fichier.
voici le flux de développement:
modifier votre entité JPA (ajouter un champ, une relation, etc.) Compilez votre application (cela fonctionne sur le code Java compilé, alors n'oubliez pas de compiler!) Utiliser mvn liquibase: diff (ou mvn compiler liquibase:diff à compiler avant) Un nouveau" journal de modification " est créé dans votre répertoire src / main/resources/config/liquibase/changelog Examinez ce journal des modifications et ajoutez-le à votre src/main/resources/config/liquibase/master.XML fichier, il est appliqué la prochaine fois que vous exécutez votre application Si vous utilisez Gradle au lieu de Maven, vous pouvez utiliser le même workflow en exécutant ./gradlew liquibaseDiffChangelog, et de modifier la configuration de base de données dans liquibase.gradle si nécessaire.
il vous suffit donc de changer vos entités JPA (remove, add, etc), Lancez mvn compiler liquibase: diff, et de mettre les changements en maître.XML.
Vous pouvez aussi modifier les entités existantes de façon interactive, p.ex. en utilisant yo jhipster:entity Foo
pour l'entité Foo
.
de cette façon, vous pouvez régénérer toutes les entités et dialogues.
si vous utilisez un RDBMS et liquibase, vous devez écrire les fichiers changelog et les ajouter au master.XML. Ce qui aide ici est d'utiliser mvn liquibase:diff
ou gradlew liquibaseDiff
, que vous pouvez exécuter contre votre base de données existante. Cependant, je recommande d'écrire les fichiers changelog manuellement.
ce que j'ai fait pour modifier l'entité jhipster comme une relation pour ajouter de nouvelles tables était:
- (enregistrer le projet avant que quelque chose arrive :p) yo jhipster:entité TableToEdit et Modifier ce que vous voulez. Who to edittabloradd
- Puis ajouter les nouvelles tables.(facultatif)
- j'avais alors juste à faire changer ou supprimer toutes les tables de la base de données, pour générer les nouveaux champs et relations sur la partie SQL automatiquement.
Remarque: Si après ces étapes, il a la moindre erreur, serverError ou quelque chose que je régénérer de l'entitérégénérer l'Entité. Bien sûr, si vous voulez conserver vos données, ce n'est pas une bonne alternative.