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?
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.
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 -->
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
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.-
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
[~ # ~] é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)"
J'ai apporté quelques ajouts aux réponses de SparX et de Meme.
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)"