我用eclipse建立了一个dynamic web project,导入了从Hibernate官网下载的entityManager包,里面包含了hibernate-annotation等包,并在META-INF下创建了persistence.xml文件,然后建立了一个类,直接在main方法中使用代码EntityManagerFactory emf = Persistence.createEntityManagerFactory("Hongbo");,但程序报错,如下:log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named Hongbo
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at ceo.robles.Test.main(Test.java:17)
以下是我的persistence.xml中的内容
<?xml version="1.0" encoding="UTF-8" ?><persistence 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"
version="1.0">
<persistence-unit name="Hongbo" transaction-type="RESOURCE_LOCAL">
<class>ceo.rovles.pojo.User</class>
   <properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
    <property name="hibernate.connection.username" value="root" />
    <property name="hibernate.connection.password" value="root" />
    <property name="hibernate.connection.url"
     value="jdbc:mysql://localhost:3306/robles?useUnicode=true&amp;characterEncoding=UTF-8" />
    <property name="hibernate.max_fetch_depth" value="3" />
    <property name="hibernate.hbm2ddl.auto" value="update" />
   </properties>
</persistence-unit>
</persistence>

解决方案 »

  1.   

    我按照网上的写了几个例子都没写成功,沉默… 请高手指点下啊,我就是纯粹的用jpa,没有和spring整合。自己顶下,呵呵
      

  2.   

    META-INF目录是创建在哪个位置?
    它应该在src下,编译后即classes下。
      

  3.   

    非常感谢,我把META-INF复制到了src下,就正常了,不过用jpa需要几个jar包,这个在哪儿找啊?我网上搜没搜到,最后零散的找了toplink的,如果用hibernate实现的那jpa的话,我需要下载什么啊?