Настроить Spring JPA для подключения MySQL - PullRequest
0 голосов
/ 12 июня 2018

У меня есть приложение Spring, которое запускается с Jetty.

Конфигурация компонента:

   <context:component-scan base-package="com.mypackage"></context:component-scan>
    <mvc:annotation-driven/>
     <tx:annotation-driven />
      <jpa:repositories base-package="com.mypackage.repository" />
    <bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/mydb?useSSL=false" />
    <property name="username" value="root" />
    <property name="password" value="123456" />
    </bean>
  <bean id="hibernateJpaVendorAdapter" 
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  </bean>
  <bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
    <!-- Set JPA properties -->
            <property name="loadTimeWeaver">
            <bean
    class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
        </property>
    <property name="jpaProperties">
      <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
        <prop key="javax.persistence.schemageneration.database.action">none</prop>
        <prop key="hibernate.ejb.use_class_enhancer">true</prop>
      </props>
    </property>

    <property name="packagesToScan" value="com.openstack.dashboard.domain"/>

    <property name="sharedCacheMode" value="ENABLE_SELECTIVE"/>

    <property name="validationMode" value="NONE"/>
  </bean>
  <bean id="transactionManager" 
    class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
  </bean>

Я получаю эту ошибку при запуске приложения:

Вызвано: org.hibernate.service.spi.ServiceException: Невозможно создать запрошенную службу [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] в org.hibernate.service.internal.AbstractServiceRegistryImpl.createService (AbstractSerp.jj264) в org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService (AbstractServiceRegistryImpl.java:228) в org.hibernate.service.internal.AbstractServiceRegistryImpl.getService (AbstractServiceRejternal.g..JdbcServicesImpl.configure (JdbcServicesImpl.java:51) в org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService (StandardServiceRegistryImpl.java:94)) вorg.hibernate.service.internal.AbstractServiceRegistryImpl.getService (AbstractServiceRegistryImpl.java:207) в org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes (MetadataBuilboh.process.spi.EntityManagerFactoryBuilderImpl.java:874) при org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory (SpringHibernateJpaPersistenceProvider.java:60) в org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory (LocalContainerEntityManagerFactoryBean.java:343) в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet (AbstractEntityManagerFactoryBean.java:318) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1637) в org.springframework.beory.factory.ablebBean.hibernate.HibernateException: Невозможно создать запрошенный диалект [org.hibernate.dialect.MySQL5Dialect] в org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.constructDialect (DialectFactoryImpl.java:84) в org.hb.dialect.internal.DialectFactoryImpl.buildDialect (DialectFactoryImpl.java:51) в org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService (JdbcEnvironmentInitiator.java:137in.en.in.en.in.v..JdbcEnvironmentInitiator.initiateService (JdbcEnvironmentInitiator.java:35) в org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService (StandardServiceRegistryImpl.java:88) в org.hiberte.service.internal.AbstractServiceRegistryImpl.createService (AbstractServiceRegistryImpl.java:254) ... еще 82 причин: java.lang.ClassCastException: org.hibernate.dialect.MySQL5Dialect не может быть приведен к org.hibernate.dia.hibernate

Информация о зависимостях:

    <dependencies>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>       
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-ldap</artifactId>
    <version>${spring.version}</version>
</dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>1.5.2.RELEASE</version>

    </dependency>
    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20160810</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-exec</artifactId>
        <version>1.0.1</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>

            <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.2.5</version>
    </dependency>
            <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
            <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.0.5</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

Я новичок в Spring.Спасибо за вашу поддержку!

1 Ответ

0 голосов
/ 12 июня 2018

Вы не поместили зависимость Hibernate в свой файл pom.xml:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.3.1.Final</version>
</dependency>

Проверьте, какая версия Hibernate удовлетворяет вашим потребностям, и не будет работать (зависит от используемой версии Spring).

Кроме того, у вас есть опечатка здесь:

<prop key="javax.persistence.schemageneration.database.action">none</prop>

она должна выглядеть следующим образом:

<prop key="javax.persistence.schema-generation.database.action">none</prop>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...