zoukankan      html  css  js  c++  java
  • Spring+Jpa整合的过程中遇到的一个问题。。。纠结了我半天。。。

    今天在出来Spring整合Jpa,由于是刚开始整合,难免会遇到很多问题。。。。。但是今天的这个问题真的让人很郁闷。。一直提示 No PersistenceProvider specified in EntityManagerFactory configuration, and chosen PersistenceUnitInfo does not specify a provider class name either这个错误,旁边还显示着org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [beans.xml]:: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No PersistenceProvider specified in EntityManagerFactory configuration, and chosen PersistenceUnitInfo does not specify a provider class name either 这样总的错误。。。

     到网上搜了好多好多方法和案例,最后终于找到了解决的方法。。我出现的问题主要是在

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
      <property name="persistenceUnitName" value="itcast" />
    </bean>

    这一块上,运行时就说这个entityManagerFactory错误。。。开始以为是class类指定的错误,网上也有一些方法说是吧LocalContainerEntityManagerFactoryBean这个类的Container这个部分去掉,我试过。。结果还是报错。。。这是一个解决方案,或许对一些人遇到的这个问题有用,但是我没有成功!

       之后有对配置文件展开了分析,考虑到了是不是persistence.xml的问题,它是放到src源文件夹下自己建的WEB-INF文件夹下面的,代码如下

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
      <persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
          <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
          <property name="hibernate.connection.username" value="root"/>
          <property name="hibernate.connection.password" value="123456"/>
          <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3308/test?useUnicode=true&amp;characterEncoding=UTF-8"/>
          <property name="hibernate.max_fetch_depth" value="3"/>
          <property name="hibernate.hbm2dd1.auto" value="update"/>
        </properties>
      </persistence-unit>
    </persistence>

    这一次解决方案是对里面添加了 <provider>org.hibernate.ejb.HibernatePersistence</provider>这一行代码,指定了这个类,之后再运行测试类,运行后又出现了错误。。

    java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface org.hibernate.cfg.Mappings as super class

    现在又出现了这个错误。。,之后我又考虑了一下,到网上找了几个解决方案,最后总结了一下是jar包的问题,我是用的hibernate的包的版本是3.5.6的版本,有很多jar包都被里面hibernate3.0.jar集合了进去,比如:

    hibernate3.5中的hibernate3.0包,已经包涵了hibernate-annotations,hibernate-commons-annotations.jar,commons-collections 这三个包,所以应该去掉commons-collections 包。但是我采取了另一种解决方案,移除hibernate-annotations,hibernate-commons-annotations.jar,成功。
    移除了persistence.jar和ejb3-persistence.jar,添加了hibernate-jpa-2.0-api-1.0.0.Final.jar,最后运行测试类的时候,总算能够成功的运行了,出现了那个成功的结果,真的很令人兴奋。。。

      今天在这里把这点小经验和大家分享一下,希望大家能有点帮助。。

  • 相关阅读:
    jquery 序列化form表单
    nginx for windows 安装
    nodejs idea 创建项目 (一)
    spring 配置 shiro rememberMe
    idea 2018 解决 双击shift 弹出 search everywhere 搜索框的方法
    redis 在windows 集群
    spring IOC控制反转和DI依赖注入
    redis 的安装
    shiro 通过jdbc连接数据库
    handlebars的用法
  • 原文地址:https://www.cnblogs.com/shunxiyuan/p/2165500.html
Copyright © 2011-2022 走看看