web-dev-qa-db-fra.com

Comment modifier une entité existante générée avec jhipster?

J'utilise le générateur jhipster pour créer un projet. J'ai généré une entité manuellement en suivant les informations fournies dans documentation de jhipster

Si vous préférez (ou devez) faire une mise à jour manuelle de la base de données, voici le workflow de développement: Modifiez votre entité JPA (ajoutez un champ, une relation , Etc.) Créez un nouveau "journal des modifications" dans votre fichier src/main/resources/config/liquibase/répertoire de changelog. Les fichiers dans ces répertoires sont préfixés par leur date de création (au format aaaaaMMjjHHmmss ) et ont ensuite un titre décrivant ce qu’ils font. Par exemple, 20141006152300_added_price_to_product.xml est un bon nom. Ajoute ça "change log" fichier dans votre fichier src/main/resources/config/liquibase/master.xml, de sorte qu'il est appliqué la prochaine fois que vous exécuterez votre application Si vous souhaitez plus d'informations sur en utilisant Liquibase, veuillez vous rendre sur http://www.liquibase.org .

Ici, la documentation ne fait que mentionner, comment ajouter !!! Que faire si je veux supprimer un champ ou une relation entre entités (entité jpa)? 

Merci

34
Pracede

1) Modifiez le fichier json représentant votre entité (ajouter/supprimer un champ, la syntaxe est assez simple, vérifiez à la fin du fichier s'il est nécessaire de modifier les propriétés de l'entité générale comme 'fieldsContainOneToMany' ...) trouvez-le dans:

<jhipster_root_folder>/.jhipster/entityName.json

2) Construisez le code.

3) Dans la racine de votre projet, exécutez la commande:

yo jhipster:entity entityName

REMARQUE: cette commande écrase par défaut toutes vos modifications manuelles. Je recommande de faire une validation sur un référentiel VCS avant d'exécuter cette commande pour éventuellement annuler toute modification non requise.

4) courir 

mvn liquibase:diff
49
Roberto

J'ai la solution a fonctionné pour jhipster 3.4.2, c'est le résultat de moi en 1 jour, espérons que cela vous sera utile :)

  1. Exécuter yo jhipster:entity entityName
  2. Modifier les entités (ajouter, supprimer, ...), à la fin, jhipster donnera la question pour remplacer le fichier, * REMARQUE IMPORTANTE: sélectionnez NON pour le fichier changelog .xml et le fichier navbar.html.
  3. Retour au projet et lancez mvn compile liquibase:diff
  4. Exécuter votre application
  5. TERMINÉ
24
ThanhLD

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 l'objectif mvn liquibase: diff pour générer automatiquement un journal des modifications.

Liquibase Hibernate est un plug-in Maven configuré dans votre pom.xml et indépendant de votre fichier Spring application.yml. Par conséquent, si vous avez modifié les paramètres par défaut (par exemple, le mot de passe de la base de données), vous devez modifier les deux .

Voici le flux de travail de développement:

Modifiez votre entité JPA (ajoutez un champ, une relation, etc.) Compilez votre application (cela fonctionne sur le code Java compilé, alors n'oubliez pas de compiler!) Exécutez mvn liquibase: diff (ou mvn compile liquibase: diff à compiler avant) Un nouveau "journal des modifications" est créé dans votre répertoire src/main/resources/config/liquibase/changelog Consultez ce journal des modifications et ajoutez-le à votre fichier src/main/resources/config/liquibase/master.xml afin qu'il soit appliqué lors de la prochaine exécution de votre application Si vous utilisez Gradle au lieu de Maven, vous pouvez utiliser le même flux de travail en exécutant ./gradlew liquibaseDiffChangelog et modifier la configuration de la base de données dans liquibase.gradle si nécessaire.

Il vous suffit donc de modifier vos entités JPA (supprimer, ajouter, etc.), d’exécuter mvn compile liquibase: diff et de placer les modifications dans master.xml.

6
brevleq

Vous pouvez également modifier des entités existantes de manière interactive, par exemple. en utilisant yo jhipster:entity Foo pour entité Foo.

De cette façon, vous pouvez régénérer toutes les entités et tous les dialogues.

Si vous utilisez un SGBDR et Liquibase, vous devez écrire le (s) fichier (s) de changelog et l'ajouter au fichier master.xml Ce qui aide ici, c'est d'utiliser mvn liquibase:diff ou gradlew liquibaseDiff, que vous pouvez exécuter avec votre base de données existante. Cependant, je recommanderais d’écrire les fichiers changelog manuellement.

6
Jörg

Pour jhipster 5.7.0, vous pouvez exécuter à nouveau la commande entity et il vous sera demandé si vous souhaitez la modifier. 

 % jhipster entity device                                 
INFO! Using JHipster version installed locally in current project's node_modules
INFO! Executing jhipster:entity device
INFO! Options: from-cli: true

Found the .jhipster/Device.json configuration file, entity can be automatically generated!


The entity device is being updated.

? Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten 
  Yes, re generate the entity 
❯ Yes, add more fields and relationships 
  Yes, remove fields and relationships 
  No, exit
1
Martin Naughton

Ce que j'ai fait pour modifier l'entité jhipster comme une relation afin d'ajouter de nouvelles tables était:

  1. (enregistrez le projet avant qu'il ne se passe quoi que ce soit: p) yo jhipster: entity TableToEdit et modifiez ce que vous voulez . Who to editTableOrAdd
  2. Ajoutez ensuite les nouvelles tables. (Facultatif)
  3. Il me suffisait alors de modifier ou de supprimer toutes les tables de la base de données pour générer automatiquement les nouveaux champs et relations de la partie SQL.

Note: Si après cette étape, il y a une erreur, serverError ou quelque chose que je régénère de entity regenerate Entity . Bien sûr, si vous souhaitez conserver toutes vos données, ce n'est pas une bonne alternative.

0
Daniel Alves