11 votes

Spring boot (mysql avec jpa ) : Aucun bean nommé 'entityManagerFactory' disponible

J'ai commencé à construire un( premièrement ) de l'application spring boot et voici ma classe principale spring boot ( Code complet sur github )

@EnableAutoConfiguration
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Et voici le pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Je continue à obtenir l'erreur suivante. Que me manque-t-il à ajouter ? Pourquoi dois-je ajouter un bean nommé 'entityManagerFactory' ? et est-ce nécessaire même après avoir utilisé Spring Boot ?

Mon dépôt ressemble à ceci si c'est important

public interface RegistrationRepo extends JpaRepository<User, Long> {
     User findByEmail(String email); 
}  

. ____ _ __ _ _ /\ / ' __ _ ( )_ __ __ _ \ \ \ \ ( ( )_ | '_ | ' | | ' / ` | \ \ \ \ \/ )| | )| | | | | || ( | | ) ) ) ) ' |____| . | | | | | | __, | / / / / =========|_|==============|___/=/ / /_/ : : Spring Boot : : (v1.5.6.RELEASE)

2017-09-13 12:48:38.808 INFO 15361 --- [ main] com.rightlink.RightLinkApplication : démarrage de RightLinkApplication sur Admins-MacBook-Pro.local avec PID 15361 (/Users/sureshatta/Documents/workspace-sts-3.9.0.RELEASE/RightLink/target/classes démarré par sureshatta dans /Users/sureshatta/Documents/workspace-sts-3.9.0.RELEASE/RightLink) 2017-09-13 12:48:38.811 INFO 15361 --- [ main] com.rightlink.RightLinkApplication : Aucun profil actif défini, retour aux profils par défaut : default 2017-09-13 12:48:38.865 INFO 15361 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@120d6fe6 : startup date [Wed Sep 13 12:48:38 IST 2017] ; Root of context hierarchy 2017-09-13 12:48:40.380 INFO 15361 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialisé avec le(s) port(s) : 8181 (http) 2017-09-13 12:48:40.402 INFO 15361 --- [ main] o.apache.catalina.core.StandardService : Démarrage du service [Tomcat] 2017-09-13 12:48:40.403 INFO 15361 --- [ main] org.apache.catalina.core.StandardEngine : démarrage du moteur de servlets : Apache Tomcat/8.5.16 2017-09-13 12:48:40.566 INFO 15361 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initialisation de Spring embedded WebApplicationContext 2017-09-13 12:48:40.567 INFO 15361 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext : initialisation terminée en 1705 ms. 2017-09-13 12:48:40.743 INFO 15361 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mappage du servlet : 'dispatcherServlet' vers [/] 2017-09-13 12:48:40.752 INFO 15361 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mappage du filtre : 'characterEncodingFilter' vers : [/ ] 2017-09-13 12:48:40.753 INFO 15361 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter : 'hiddenHttpMethodFilter' to : [/ ] 2017-09-13 12:48:40.753 INFO 15361 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter : 'httpPutFormContentFilter' to : [/ ] 2017-09-13 12:48:40.753 INFO 15361 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter : 'requestContextFilter' to : [/ ] 2017-09-13 12:48:40.844 WARN 15361 --- [ main] ationConfigEmbeddedWebApplicationContext : Exception rencontrée lors de l'initialisation du contexte - annulation de la tentative de rafraîchissement : org.springframework.beans.factory.UnsatisfiedDependencyException : Erreur lors de la création du bean avec le nom 'registerController' : Dépendance non satisfaite exprimée par le champ 'regServices' ; l'exception imbriquée est org.springframework.beans.factory.UnsatisfiedDependencyException : Error creating bean with name 'regService' : Dépendance non satisfaite exprimée par le champ 'registrationRepo' ; l'exception imbriquée est org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'registrationRepo' : Cannot create inner bean '(inner bean)#43c67247' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager' ; l'exception imbriquée est org.springframework.beans.factory.BeanCreationException : Error creating bean with name '(inner bean)#43c67247' : Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument ; l'exception imbriquée est org.springframework.beans.factory.NoSuchBeanDefinitionException : Aucun bean nommé 'entityManagerFactory' n'est disponible. 2017-09-13 12:48:40.849 INFO 15361 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2017-09-13 12:48:40.903 INFO 15361 --- [ main] utoConfigurationReportLoggingInitializer :

Erreur lors du démarrage de l'ApplicationContext. Pour afficher le rapport d'auto-configuration, relancez votre application avec l'option 'debug' activée. 2017-09-13 12:48:40.975 ERROR 15361 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :


L'APPLICATION N'A PAS RÉUSSI À DÉMARRER


Description :

Le champ registrationRepo de com.rightlink.services.RegistrationService requiert un bean nommé 'entityManagerFactory' qui ne peut être trouvé.

Action :

Pensez à définir un bean nommé "entityManagerFactory" dans votre configuration.

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/Test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
server.port=8181

J'ai essayé d'ajouter @Repository pour le repo, et a également ajouté @enableJpaRepositories dans la classe principale. Rien n'y fait.

4voto

Le problème n'est pas directement lié à la version de démarrage, mais plutôt aux pots d'hibernation bloqués. Depuis que j'ai ajouté le support JPA au projet, le démarrage utilise en interne ( ??) Hibernate comme implémentation JPA et essaie d'utiliser ( ??) ces jarres. Depuis que mon repo local a été corrompu hibernate-entity-* jars cette erreur bizarre se produit.

Leur commentaire dans le code confirmant qu'ils utilisent hibernation en interne.

 <!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

J'ai supprimé le dossier hibernate complet de mon repo local maven et maintenant cela semble correct.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X