IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Comment supprimer un element de la base en fonction du mail?


Sujet :

Spring Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2022
    Messages : 36
    Points : 24
    Points
    24
    Par défaut Comment supprimer un element de la base en fonction du mail?
    Bonjour,

    J'ai réalisé un simple formulaire ou l'on renseigne le mail et le but c'est de supprimer la ligne où le mail inscrit dans le champs correspond:

    Voici la page du formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Formulaire d'inscription</title>
    </head>
    <body>
    	<h1>Créer votre compte</h1>
    	<form action="ajouter" method="post">
    		<input type="text" name="prenom" placeholder="prenom"/><br>
    		<input type="text" name="nom" placeholder="nom"/><br>
    		<input type="text" name="mail" placeholder="addresse mail"/><br>
    		<input type="submit" value="créer" name="creer"/>
    	</form>
    	<hr>
    	<h1>Supprimer votre compte</h1>
    	<form action="supprimer" method="post">
    		<input type="email" name="mail" placeholder="addresse mail"/><br>
    		<input type="submit" value="supprimer" name="supprimer"/>
    	</form>
    </body>
    </html>
    Mon api :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    package com.Swinolani.Eval.Controlleur;
     
    import java.util.ArrayList;
    import java.util.Map;
     
    import org.springframework.web.bind.annotation.DeleteMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
     
    import com.Swinolani.Eval.bdd.BddClientRequest;
     
    @RestController
    public class Supprimer {
    	private BddClientRequest clientBddRepo;
    	public Supprimer(BddClientRequest clientBddRepo) {
    		this.clientBddRepo = clientBddRepo;
    	}
    	@PostMapping("/supprimer")
    	public String SupprClient(@RequestParam Map<String,String> param) {
    		//Code pour recup tous les mails dans la bdd
    		ArrayList<String> listMail=new ArrayList<>();
    		for(int i =0;i<clientBddRepo.findAll().size();i++) {
    			listMail.add(clientBddRepo.findAll().get(i).getCli_mail());
    		}
    		//Si le mail inscrit se trouve dans la bdd
    		if(param.containsValue("supprimer") && listMail.contains(param.get("mail")) ) {
    			clientBddRepo.delete(null);//??
    			return "<h1>Suppression avec succés</h1>";
    		}else {
    			return "<h1>Le mail n'existe pas dans la base</h1>";
    		}
     
    	}
    }
    L'anomalie se trouve à la ligne 29 (la ligne de code est par défaut ce que j'ai noté mais c'est juste pour mettre un truc).
    Merci d'avance .

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 330
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    Ou est votre problème ?
    Si vous ne savez pas quoi passer au lieu du null, nous non plus. Il nous faudrait plus de détails sur le contenu de BddClientRequest

    Si vous ne savez pas trop comment faire, la plupart du temps on écrit des méthodes assez spécifiques dans le "repo" (votre BddClientRequest). Du style, "deleteByEmail" qui se traduit par une requête SQL "DELETE FROM .. WHERE ...". D'autres préfent un "findByEmail" suivi d'une "delete" qui prend l'identifiant retourné par la première.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2022
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gervais.b Voir le message
    Bonjour,

    Ou est votre problème ?
    Si vous ne savez pas quoi passer au lieu du null, nous non plus. Il nous faudrait plus de détails sur le contenu de BddClientRequest

    Si vous ne savez pas trop comment faire, la plupart du temps on écrit des méthodes assez spécifiques dans le "repo" (votre BddClientRequest). Du style, "deleteByEmail" qui se traduit par une requête SQL "DELETE FROM .. WHERE ...". D'autres préfent un "findByEmail" suivi d'une "delete" qui prend l'identifiant retourné par la première.
    Bonjour,

    Oui c'est exactement ce que je viens de faire , voici le repo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package com.Swinolani.Eval.bdd;
     
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
     
    import com.Swinolani.Eval.Modele.Client;
     
    public interface BddClientRequest extends JpaRepository<Client, Integer> {
     
    	@Query("SELECT cli_id from client where cli_mail=:mail")
    	Integer idDuMail(@Param("mail") String mail);
    }
    et l'api avec les modifs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    package com.Swinolani.Eval.Controlleur;
     
    import java.util.ArrayList;
    import java.util.Map;
     
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.web.bind.annotation.DeleteMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
     
    import com.Swinolani.Eval.bdd.BddClientRequest;
     
    @RestController
    public class Supprimer {
     
    	private BddClientRequest clientBddRepo;
     
    	public Supprimer(BddClientRequest clientBddRepo) {
    		this.clientBddRepo = clientBddRepo;
    	}
    	@PostMapping("/supprimer")
    	public String SupprClient(@RequestParam Map<String,String> param) {
     
    		//Code pour recup tous les mails dans la bdd
    		ArrayList<String> listMail=new ArrayList<>();
     
    		for(int i =0;i<clientBddRepo.findAll().size();i++) {
    			listMail.add(clientBddRepo.findAll().get(i).getCli_mail());
    		}
     
    		//Si le mail inscrit se trouve dans la bdd
    		if(param.containsValue("supprimer") && listMail.contains(param.get("mail")) ) {
     
    			clientBddRepo.deleteById(clientBddRepo.idDuMail(param.get("mail")));
     
    			return "<h1>Suppression avec succés</h1>";
    		}else {
    			return "<h1>Le mail n'existe pas dans la base</h1>";
    		}
     
    	}
    }
    Et avec ça, je n'ai carrément plus accès à mon localhost; ça me dit qu'aucune connexion n'est autorisé.

  4. #4
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 330
    Points : 444
    Points
    444
    Par défaut
    Citation Envoyé par Swinolani Voir le message
    Et avec ça, je n'ai carrément plus accès à mon localhost; ça me dit qu'aucune connexion n'est autorisé.
    Ca, c'est un autre problème.

    Quelle base de donnés utilisez vous ?
    Avez-vous vérifié qu'elle tourne correctement ?
    Avez-vous vérifié vos accès et firewall pour le port ?

    Il y à pas mal de questions avec des problèmes similaires de "connexion à localhost" avec MySQL sur ce forum.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2022
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gervais.b Voir le message
    Ca, c'est un autre problème.

    Quelle base de donnés utilisez vous ?
    Avez-vous vérifié qu'elle tourne correctement ?
    Avez-vous vérifié vos accès et firewall pour le port ?

    Il y à pas mal de questions avec des problèmes similaires de "connexion à localhost" avec MySQL sur ce forum.
    Lorsque j'enlève ce que j'ai ajouté dans le repo et le bout de code à la ligne 36, tout marche correctement.
    J'utilise MySQL et absolument tout fonctionne correctement mais des que j'ajoute le Query custom et le bout de code pour récupérer la méthode, j'ai plus accès au local host.

  6. #6
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 330
    Points : 444
    Points
    444
    Par défaut
    Est-ce que vous êtes certain que cela fonctionnait avant ?

    Le fait de rajouter une méthode dans votre repo ne devrait pas avoir d'implications sur la disponibilité de la connexion. Auriez-vous la trace de l'exception lancée ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2022
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gervais.b Voir le message
    Est-ce que vous êtes certain que cela fonctionnait avant ?

    Le fait de rajouter une méthode dans votre repo ne devrait pas avoir d'implications sur la disponibilité de la connexion. Auriez-vous la trace de l'exception lancée ?
    Absolument certain, je vais copier coller l'entièreté de toutes les exceptions que cela me renvoie :



    Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
    2023-03-15T09:19:00.782+01:00 ERROR 13952 --- [ restartedMain] o.s.boot.SpringApplication  : Application run failed

    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ajouter' defined in file [C:\Users\aqwxc\OneDrive\Bureau\Projets Spring\Evaluation-Spring\target\classes\com\Swinolani\Eval\Controlleur\Ajouter.class]: Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'bddClientRequest' defined in com.Swinolani.Eval.bdd.BddClientRequest defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String); Reason: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:245) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1344) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1188) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) ~[spring-context-6.0.6.jar:6.0.6]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.6.jar:6.0.6]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.0.4.jar:3.0.4]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-3.0.4.jar:3.0.4]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-3.0.4.jar:3.0.4]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) ~[spring-boot-3.0.4.jar:3.0.4]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) ~[spring-boot-3.0.4.jar:3.0.4]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) ~[spring-boot-3.0.4.jar:3.0.4]
    at com.Swinolani.Eval.EvaluationSpringApplication.main(EvaluationSpringApplication.java:10) ~[classes/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-3.0.4.jar:3.0.4]

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bddClientRequest' defined in com.Swinolani.Eval.bdd.BddClientRequest defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String); Reason: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1762) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ~[spring-beans-6.0.6.jar:6.0.6]
    ... 24 common frames omitted

    Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String); Reason: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    at org.springframework.data.repository.query.QueryCreationException.create(QueryCreationException.java:101) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:115) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:99) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:88) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at java.base/java.util.Optional.map(Optional.java:260) ~[na:na]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:88) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:357) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:245) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.util.Lazy.get(Lazy.java:114) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) ~[spring-data-commons-3.0.3.jar:3.0.3]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:132) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1808) ~[spring-beans-6.0.6.jar:6.0.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1758) ~[spring-beans-6.0.6.jar:6.0.6]
    ... 35 common frames omitted

    Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:100) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:70) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:55) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:170) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:252) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:95) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:111) ~[spring-data-commons-3.0.3.jar:3.0.3]
    ... 47 common frames omitted

    Caused by: java.lang.IllegalArgumentException: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'client'
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:175) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:182) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:760) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:662) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:126) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
    at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:360) ~[spring-orm-6.0.6.jar:6.0.6]
    at jdk.proxy4/jdk.proxy4.$Proxy100.createQuery(Unknown Source) ~[na:na]
    at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:94) ~[spring-data-jpa-3.0.3.jar:3.0.3]
    ... 53 common frames omitted

    Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'client'
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1628) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:243) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.grammars.hql.HqlParser$RootEntityContext.accept(HqlParser.java:1875) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitEntityWithJoins(SemanticQueryBuilder.java:1548) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitFromClause(SemanticQueryBuilder.java:1539) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuery(SemanticQueryBuilder.java:833) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:629) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitQuerySpecExpression(SemanticQueryBuilder.java:243) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.grammars.hql.HqlParser$QuerySpecExpressionContext.accept(HqlParser.java:1220) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:623) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSimpleQueryGroup(SemanticQueryBuilder.java:243) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.grammars.hql.HqlParser$SimpleQueryGroupContext.accept(HqlParser.java:1133) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitSelectStatement(SemanticQueryBuilder.java:399) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitStatement(SemanticQueryBuilder.java:358) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.SemanticQueryBuilder.buildSemanticModel(SemanticQueryBuilder.java:285) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.hql.internal.StandardHqlTranslator.translate(StandardHqlTranslator.java:81) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.lambda$createQuery$2(AbstractSharedSessionContract.java:747) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.createHqlInterpretation(QueryInterpretationCacheStandardImpl.java:141) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.query.internal.QueryInterpretationCacheStandardImpl.resolveHqlInterpretation(QueryInterpretationCacheStandardImpl.java:128) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:744) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
    ... 62 common frames omitted

  8. #8
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 330
    Points : 444
    Points
    444
    Par défaut
    Ok, la raison est dans les traces:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error creating bean with name 'bddClientRequest' defined in com.Swinolani.Eval.bdd.BddClientRequest .. Reason: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    ...
    ...
    Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'client'
    ...
    Est-ce que la classe Client correspond bien à l'entité (table) "client" ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2022
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gervais.b Voir le message
    Ok, la raison est dans les traces:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error creating bean with name 'bddClientRequest' defined in com.Swinolani.Eval.bdd.BddClientRequest .. Reason: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    ...
    ...
    Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'client'
    ...
    Est-ce que la classe Client correspond bien à l'entité (table) "client" ?
    oui tout correspond.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2022
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par gervais.b Voir le message
    Ok, la raison est dans les traces:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error creating bean with name 'bddClientRequest' defined in com.Swinolani.Eval.bdd.BddClientRequest .. Reason: Validation failed for query for method public abstract java.lang.Integer com.Swinolani.Eval.bdd.BddClientRequest.idDuMail(java.lang.String)
    ...
    ...
    Caused by: org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'client'
    ...
    Est-ce que la classe Client correspond bien à l'entité (table) "client" ?
    J'ai trouvé le souci, il fallait mettre une majuscule à "client" dans ma requête. Visiblement même si le nom de la table dans MySQL est en minuscule, sur le repo, la requête doit coïncider parfaitement avec le nom de la classe.
    Merci de m'avoir orienté vers le souci et d'avoir pris du temps pour le résoudre

  11. #11
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 330
    Points : 444
    Points
    444
    Par défaut
    Je suppose que Spring ou Hibernate déduis le nom depuis la classe si on ne lui spécifie rien d'autre.

    Heureux d'avoir pu vous aider.

    (N'oubliez pas que la convention de codage Java utilisent lowerCamelCase pour les méthodes )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/12/2006, 21h31
  2. Réponses: 5
    Dernier message: 20/08/2006, 15h41
  3. [VB.NET][listbox] Comment supprimer un element ?
    Par am.adnane dans le forum Windows Forms
    Réponses: 5
    Dernier message: 11/07/2006, 01h28
  4. Réponses: 3
    Dernier message: 31/05/2006, 15h12
  5. Réponses: 4
    Dernier message: 24/05/2006, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo