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下了 --------------------编程问答-------------------- 谁能测试一下,看会不会出现同样错误 --------------------编程问答-------------------- 自己测试了一下,发现没出现错误 --------------------编程问答-------------------- --------------------编程问答--------------------
你有没有改什么东西,直接用上面的代码吗
补充:Java , Web 开发