当前位置:编程学习 > JAVA >>

jpa 应用 创建EntityManagerFactory失败

高手们快帮帮我吧

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="demo" 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="com.mysql.jdbc.Driver" />  
            <property name="hibernate.connection.username" value="root" />  
            <property name="hibernate.connection.password" value="admin@123" />  
            <property name="hibernate.connection.url"  
                value="jdbc:mysql://localhost:3306/jsfjpa?useUnicode=true&characterEncoding=UTF-8" />  
              
            <!-- 数据源设置 -->  
            <property name="hibernate.max_fetch_depth" value="3" />  
            <property name="hibernate.hbm2ddl.auto" value="update" />  
            <property name="hibernate.jdbc.fetch_size" value="50" />  
            <property name="hibernate.jdbc.batch_size" value="10" />  
            <property name="hibernate.show_sql" value="true" />  
            <property name="hibernate.format_sql" value="true" />  
        </properties>  
    </persistence-unit>  
  
</persistence> 

 Persion实体类

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity  
@Table(name="persion")  
public class Persion {  
    @Id  
    @GeneratedValue(strategy = GenerationType.IDENTITY)  
    private java.lang.Long userid;  
    private java.lang.String name;  
     
     
    public java.lang.Long getUserid() {  
        return userid;  
    }  
    public void setUserid(java.lang.Long userid) {  
        this.userid = userid;  
    }  
    public java.lang.String getName() {  
        return name;  
    }  
    public void setName(java.lang.String name) {  
        this.name = name;  
    }  
      



servlet类


import java.io.IOException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.pbk.entity.Persion;

public class Start extends HttpServlet{
 public void doGet(HttpServletRequest request, HttpServletResponse response)  
   throws ServletException, IOException {
   EntityManagerFactory entityfactory = null;  
   EntityTransaction  t=null;  
   EntityManager em=null;  
  try{  
   entityfactory = Persistence.createEntityManagerFactory("demo");  
   em=entityfactory.createEntityManager();    
     
     
      t=em.getTransaction();  
   t.begin();  
   Persion p=new Persion();  
   p.setName("abc");  
   em.persist(p);  
   t.commit();  
  }catch(Exception e){  
   e.printStackTrace();   
  }  
  em.close();  
  entityfactory.close();  
 }
 
}

输入请求地址控制台报错
javax.persistence.PersistenceException: No Persistence provider for EntityManager named demo
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at com.pbk.action.Start.doGet(Start.java:23)
        ...........
我又写了一个Test类
直接在main方法里运行就没错

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.pbk.entity.Persion;

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
        try {
EntityManagerFactory emf =  Persistence  
.createEntityManagerFactory("demo");  
EntityManager em = emf.createEntityManager();  
em.getTransaction().begin();    
Persion p=new Persion();  
p.setName("af");
em.persist(p);  
em.getTransaction().commit();  
em.close();
} catch (Exception e) {

e.printStackTrace();
}
}

}

这是什么原因啊 --------------------编程问答-------------------- 没人解决吗,快来高手啊 --------------------编程问答-------------------- 没有hibernate-entitymanager.jar包? --------------------编程问答-------------------- Persistence.xml放错地方了。 --------------------编程问答-------------------- 有hibernate-entitymanager.jar这个包
Persistence.xml也没放错地方
我前边有一个Test类
用main方法就可以插入数据
但是通过网页访问servlet就不行啊 --------------------编程问答-------------------- 应该是Persistence.xml这个文件,没有加载。 --------------------编程问答-------------------- 我也很纳闷,为什么通过main方法调用就没事 --------------------编程问答-------------------- 你是怎么引入jar的,是不是少了jar的缘故呢 --------------------编程问答-------------------- antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ejb3-persistence.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-cglib-repack-2.1_3.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
javassist-3.4.GA.jar
jta-1.1.jar
log4j.jar
mysql-connector-java-5.1.16-bin.jar
slf4j-api-1.5.2.jar
slf4j-log4j12.jar
把这些包放到WEB-INF/lib下了 --------------------编程问答-------------------- 谁能测试一下,看会不会出现同样错误 --------------------编程问答-------------------- 自己测试了一下,发现没出现错误 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 10 楼 xizhou704 的回复:
自己测试了一下,发现没出现错误

你有没有改什么东西,直接用上面的代码吗
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,