web-dev-qa-db-fra.com

Comment supprimer une entité après l'avoir créée à l'aide de jhipster?

J'ai créé 3 entités (Auteur, Livre, Bibliothèque) à l'aide de la commande "yo jhipster: entity" mais dans une entité (Bibliothèque) j'avais une relation ManyToMany (avec Livre) mais cela a provoqué "mappedBy reference une propriété d'entité cible inconnue: com. tst.testdomain.domain.Book.librarys dans com.tst.testdomain.docmain.Library.books "donc quelle est la manière propre de supprimer l'entité Library. Une commande comme "yo jhipster: entitydelete" serait-elle utile?

23
vijay bhatt

J'utilise git scm pour cela. Ce ne sont pas seulement les fichiers générés qui doivent être supprimés. jHipster modifie également les fichiers donc avec ceux dont vous avez besoin pour conserver le fichier mais annulez le changement.

Chaque fois que je crée une entité, je fais un commit séparé pour pouvoir suivre ce que jHipster a fait pour chaque entité.

Pour effacer toutes les modifications depuis le dernier commit que je fais

git reset --hard
git clean -fd

Si je l'ai fait mais que je dois également annuler le commit précédent, je le fais

git reset --hard HEAD~1

Les commits sont locaux avec git donc ce n'est que lorsque vous poussez ces commits qu'ils seront partagés.

15
Ben Thurley

Vous devez supprimer les éléments suivants:

rm -rf   src/main/resources/config/liquibase/changelog/XXX_added_entity_YourEntity.xml
rm -rf src/main/Java/com/radsphere/jeces/domain/YourEntity.Java
rm -rf src/main/Java/com/radsphere/jeces/repository/YourEntityRepository.Java
rm -rf src/main/Java/com/radsphere/jeces/web/rest/YourEntityResource.Java 
rm -rf src/main/webapp/scripts/app/entities/YourEntity/YourEntitys.html
rm -rf src/main/webapp/scripts/app/entities/YourEntity/YourEntity-detail.html
rm -rf src/main/webapp/scripts/app/entities/YourEntity/YourEntity.js
rm -rf src/main/webapp/scripts/app/entities/YourEntity/YourEntity.controller.js
rm -rf src/main/webapp/scripts/app/entities/YourEntity/YourEntity-detail.controller.js
rm -rf  src/main/webapp/scripts/components/entities/YourEntity/YourEntity.service.js
rm -rf src/test/Java/com/radsphere/jeces/web/rest/YourEntityResourceTest.Java
rm -rf src/main/webapp/i18n/en/YourEntity.json
rm -rf src/main/webapp/i18n/fr/YourEntity.json       

Et supprimez la référence de config/liquibase/master.xml:

<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

<include file="classpath:config/liquibase/changelog/00000000000000_initial_schema.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307175923_added_entity_Company.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307180142_added_entity_UserTypeRecruiter.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307180338_added_entity_UserTypeCandidate.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307180448_added_entity_QuestionType.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307180612_added_entity_Question.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307180849_added_entity_Answer.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307181033_added_entity_CandidateAnswer.xml" relativeToChangelogFile="false"/>
<!--<include file="classpath:config/liquibase/changelog/20150307181249_added_entity_your_removed_entity.xml" relativeToChangelogFile="false"/>-->
<include file="classpath:config/liquibase/changelog/20150307182736_added_entity_ExamTemplate.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/liquibase/changelog/20150307182950_added_entity_Exam.xml" relativeToChangelogFile="false"/>
<!-- JHipster will add liquibase changelogs here -->
9
shacharsol

Je fais une demande de pull pour ajouter cette fonctionnalité: https://github.com/jhipster/generator-jhipster/pull/4369

Pour l'utiliser, c'est assez simple:

yo jhipster:entity Foo --remove

Il supprime le script de la base de données, mais après vous devez gérer la famille de tables/colonnes déjà créée et non encore supprimée.

Veuillez voter ou commenter le problème si cela vous intéresse: https://github.com/jhipster/generator-jhipster/issues/4372

8
Duff

c'est simple, il vous suffit de supprimer l'entité dans le répertoire .jhipster/entityName.json et c'est tout.

Vous pouvez exécuter à nouveau "l'entité yo: jhipster" et remplacer tout le reste.

Meme.-

6
Meme

Vous avez raison, une commande de suppression serait utile. Mais cette commande n'existe pas aujourd'hui. Il sera peut-être ajouté. Si vous souhaitez supprimer une entité, vous devez le faire manuellement. Supprimez donc tous les fichiers générés pour votre entité: domaine, référentiel, repos, test, contrôleur et services Angularjs, vue HTML, lien dans le menu, vue HTML

6
Pracede

[~ # ~] édité [~ # ~] : script ajouté pour la nouvelle version de jhipster 3.9.0

Mon script delete-entity.sh pour jhipster version 2.26.2 , basé sur la réponse de @shacharsol.

Utilisation: ./delete-entity GROUP_ID ENTITY_NAME

GROUP_ID: com/subpackage/et/so/on/(finissez par '/')

ENTITY_NAME: firstLowercaseNameOfEntity

Exemple: ./delete-entity uz/javlon/transInfo

#!/usr/bin/env bash

echo "################";

if [ -z "$1" ];
then
    printf "Required argument GROUP_ID is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME.\n";
    exit 1;
else
    GROUP_ID=$1;
    echo "GROUP_ID is set to '$1'.";
fi

if [ -z "$2" ];
then
    printf "Required argument ENTITY_NAME is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME .\n";
    exit 1;
else
    ENTITY_NAME=$2;
    echo "ENTITY_NAME is set to '$2'.";
fi

echo;

rm -rf src/main/resources/config/liquibase/changelog/*_added_entity_${ENTITY_NAME^}.xml
rm -rf src/main/Java/${GROUP_ID}domain/${ENTITY_NAME^}.Java
rm -rf src/main/Java/${GROUP_ID}repository/${ENTITY_NAME^}Repository.Java
rm -rf src/main/Java/${GROUP_ID}repository/search/${ENTITY_NAME^}SearchRepository.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/${ENTITY_NAME^}Resource.Java

rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}s.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-detail.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-detail.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-dialog.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-dialog.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-delete-dialog.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-delete-dialog.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}

rm -rf src/main/webapp/scripts/components/entities/${ENTITY_NAME}/${ENTITY_NAME}.service.js
rm -rf src/main/webapp/scripts/components/entities/${ENTITY_NAME}/${ENTITY_NAME}.search.service.js
rm -rf src/main/webapp/scripts/components/entities/${ENTITY_NAME}

rm -rf src/test/Java/${GROUP_ID}web/rest/${ENTITY_NAME^}ResourceIntTest.Java
rm -rf src/test/gatling/simulations/${ENTITY_NAME^}GatlingTest.scala
rm -rf src/test/javascript/spec/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-detail.controller.spec.js
rm -rf src/test/javascript/spec/app/entities/${ENTITY_NAME}

rm -rf src/main/webapp/i18n/en/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/ru/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/uz/${ENTITY_NAME}.json

rm -rf ./.jhipster/${ENTITY_NAME^}.json

echo;
echo "Deleting ${ENTITY_NAME^} is completed.";
echo "################";

Mon autre script delete-entity.sh pour jhipster version 3.9. , basé sur la réponse de @Tevfik Kiziloren.

#!/usr/bin/env bash

echo;
if [ -z "$1" ];
then
    printf "Required argument GROUP_ID is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME.\n";
    exit 1;
else
    GROUP_ID=$1;
    echo "GROUP_ID is set to '$1'.";
fi

if [ -z "$2" ];
then
    printf "Required argument ENTITY_NAME is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME .\n";
    exit 1;
else
    ENTITY_NAME=$2;
    Java_ENTITY_NAME=`echo ${ENTITY_NAME:0:1} | tr  '[a-z]' '[A-Z]'`${ENTITY_NAME:1}
    echo "ENTITY_NAME is set to '$2'."
    echo "Java entity name inferred as: '${Java_ENTITY_NAME}'.";
fi

Java_ENTITY_NAME=`echo ${ENTITY_NAME:0:1} | tr  '[a-z]' '[A-Z]'`${ENTITY_NAME:1}
UNDERSCORED_FOLDER_NAME=`echo ${ENTITY_NAME} | sed -r 's/([a-z0-9])([A-Z])/\1-\L\2/g'`
echo ${UNDERSCORED_FOLDER_NAME};

QUESTION=$'You may want to keep definition file(.jhipster/'${Java_ENTITY_NAME}'.json) in case you want to regenerate entity in the future.\nDo you want to delete entity definition file also?'

while true; do
    read -p "${QUESTION}" yn
    case $yn in
        [Yy]* ) rm -rf ./.jhipster/${ENTITY_NAME}.json; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done

echo;
echo "Starting to delete files...";

rm -rf src/main/resources/config/liquibase/changelog/*_added_entity_${Java_ENTITY_NAME}.xml
rm -rf src/main/Java/${GROUP_ID}domain/${Java_ENTITY_NAME}.Java
rm -rf src/main/Java/${GROUP_ID}repository/${Java_ENTITY_NAME}Repository.Java
rm -rf src/main/Java/${GROUP_ID}service/${Java_ENTITY_NAME}Service.Java
rm -rf src/main/Java/${GROUP_ID}service/impl/${Java_ENTITY_NAME}ServiceImpl.Java
rm -rf src/main/Java/${GROUP_ID}repository/search/${Java_ENTITY_NAME}SearchRepository.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/${Java_ENTITY_NAME}Resource.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/dto/${Java_ENTITY_NAME}DTO.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/mapper/${Java_ENTITY_NAME}Mapper.Java
rm -rf target/generated-sources/${GROUP_ID}web/rest/mapper/${Java_ENTITY_NAME}MapperImpl.Java

rm -rf src/main/webapp/app/entities/${UNDERSCORED_FOLDER_NAME}/*

rm -rf src/test/Java/${GROUP_ID}web/rest/${Java_ENTITY_NAME}ResourceIntTest.Java
rm -rf src/test/gatling/simulations/${Java_ENTITY_NAME}GatlingTest.scala
rm -rf src/test/javascript/spec/app/entities/${UNDERSCORED_FOLDER_NAME}/*
rm -rf src/test/javascript/spec/app/entities/${UNDERSCORED_FOLDER_NAME}

rm -rf src/main/webapp/i18n/en/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/fr/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/ru/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/uz/${ENTITY_NAME}.json

echo "Deleting entity '${ENTITY_NAME}' is completed.";
echo;
echo "-----------------------------------------------------";
echo "Do not forget to manually correct these files also:  ";
echo "-----------------------------------------------------";
echo " --> src/main/webapp/index.html"
echo " --> src/main/webapp/scripts/compopnents/navbar.html"
echo " --> src/main/webapp/i18n/**/global.json"
echo " --> src/main/resources/config/liquibase/master.xml (if you use liquibase)"
echo " --> src/main/resources/config/mongeez/master.xml   (if you use mongodb)"
4
SparX

J'ai apporté quelques ajouts aux réponses de SparX et de Meme.

  • Vous devez supprimer DTO fichier généré pour l'entité, si vous aviez choisi de "utiliser les DTO" lors de la génération de votre entité,
  • JHipster utilise Mapstruct pour mapper Entité et DTO . Si vous utilisez DTO, vous devez supprimer mapper les classes que JHipster a générées pour vous
  • Vous devez supprimer les références de fichier javascript des entités supprimées de "webapp/index.html"
  • Vous devez supprimer les définitions i18n de l'entité supprimée de "webapp/i18n/*/global.json"
  • Vous devez supprimer les liens de menu de "webapp/scripts/components/navbar.html"
  • Si vous souhaitez mettre à jour la définition de l'entité de mise à jour et régénérer l'entité à l'avenir, vous pouvez conserver ./. Jhipster/$ {ENTITY_NAME} .json

J'ai mis à jour le script bash de SparX (delete-entity.sh) pour demander s'il faut supprimer le fichier de définition d'entité ou non. De plus, la syntaxe "$ {ENTITY_NAME ^}" (qui est utilisée pour convertir la première lettre du nom d'entité en majuscules) n'est pas exécutée dans les anciennes versions bash (telles que 3.2).

Le script bash mis à jour est ci-dessous. Mettez simplement ce script dans le dossier où se trouve votre pom.xml.

Exemple d'utilisation: Si groupId de votre projet "com.example" et si vous souhaitez supprimer l'entité nommée "city", un exemple la commande est donnée ci-dessous:

./ delete-entity.sh com/exemple/ville

#!/usr/bin/env bash
echo;
if [ -z "$1" ];
then
    printf "Required argument GROUP_ID is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME.\n";
    exit 1;
else
    GROUP_ID=$1;
    echo "GROUP_ID is set to '$1'.";
fi

if [ -z "$2" ];
then
    printf "Required argument ENTITY_NAME is not set. \nUsage: ./delete-entity.sh GROUP_ID ENTITY_NAME .\n";
    exit 1;
else
    ENTITY_NAME=$2;
    Java_ENTITY_NAME=`echo ${ENTITY_NAME:0:1} | tr  '[a-z]' '[A-Z]'`${ENTITY_NAME:1} 
    echo "ENTITY_NAME is set to '$2'." 
    echo "Java entity name inferred as: '${Java_ENTITY_NAME}'.";
fi

Java_ENTITY_NAME=`echo ${ENTITY_NAME:0:1} | tr  '[a-z]' '[A-Z]'`${ENTITY_NAME:1} 


QUESTION=$'You may want to keep definition file(.jhipster/${Java_ENTITY_NAME}.json) in case you want to regenerate entity in the future.\nDo you want to delete entity definition file also?'

while true; do
    read -p "${QUESTION}" yn
    case $yn in
        [Yy]* ) rm -rf ./.jhipster/${ENTITY_NAME}.json; break;;
        [Nn]* ) break;;
        * ) echo "Please answer yes or no.";;
    esac
done

echo;
echo "Starting to delete files...";

rm -rf src/main/resources/config/liquibase/changelog/*_added_entity_${Java_ENTITY_NAME}.xml
rm -rf src/main/Java/${GROUP_ID}domain/${Java_ENTITY_NAME}.Java
rm -rf src/main/Java/${GROUP_ID}repository/${Java_ENTITY_NAME}Repository.Java
rm -rf src/main/Java/${GROUP_ID}service/${Java_ENTITY_NAME}Service.Java
rm -rf src/main/Java/${GROUP_ID}service/impl/${Java_ENTITY_NAME}ServiceImpl.Java
rm -rf src/main/Java/${GROUP_ID}repository/search/${Java_ENTITY_NAME}SearchRepository.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/${Java_ENTITY_NAME}Resource.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/dto/${Java_ENTITY_NAME}DTO.Java
rm -rf src/main/Java/${GROUP_ID}web/rest/mapper/${Java_ENTITY_NAME}Mapper.Java
rm -rf target/generated-sources/${GROUP_ID}web/rest/mapper/${Java_ENTITY_NAME}MapperImpl.Java

rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}s.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-detail.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-detail.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-dialog.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-dialog.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-delete-dialog.html
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-delete-dialog.controller.js
rm -rf src/main/webapp/scripts/app/entities/${ENTITY_NAME}

rm -rf src/main/webapp/scripts/components/entities/${ENTITY_NAME}/${ENTITY_NAME}.service.js
rm -rf src/main/webapp/scripts/components/entities/${ENTITY_NAME}/${ENTITY_NAME}.search.service.js
rm -rf src/main/webapp/scripts/components/entities/${ENTITY_NAME}

rm -rf src/test/Java/${GROUP_ID}web/rest/${ENTITY_NAME}ResourceIntTest.Java
rm -rf src/test/gatling/simulations/${ENTITY_NAME}GatlingTest.scala
rm -rf src/test/javascript/spec/app/entities/${ENTITY_NAME}/${ENTITY_NAME}-detail.controller.spec.js
rm -rf src/test/javascript/spec/app/entities/${ENTITY_NAME}

rm -rf src/main/webapp/i18n/en/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/fr/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/ru/${ENTITY_NAME}.json
rm -rf src/main/webapp/i18n/uz/${ENTITY_NAME}.json

echo "Deleting entity '${ENTITY_NAME}' is completed.";
echo;
echo "-----------------------------------------------------";
echo "Do not forget to manually correct these files also:  ";
echo "-----------------------------------------------------";
echo " --> src/main/webapp/index.html"
echo " --> src/main/webapp/scripts/compopnents/navbar.html"
echo " --> src/main/webapp/i18n/**/global.json"
echo " --> src/main/resources/config/liquibase/master.xml (if you use liquibase)"
echo " --> src/main/resources/config/mongeez/master.xml   (if you use mongodb)"
0
Tevfik Kiziloren