jpa 应用 创建EntityManagerFactory失败

pbkok 2013-05-14 03:21:14
高手们快帮帮我吧

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();
}
}

}

这是什么原因啊
...全文
625 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
GHOST64 2015-01-07
  • 打赏
  • 举报
回复
我也遇到这个问题。。结果发现是persistence.xml放错位置
pbkok 2013-05-15
  • 打赏
  • 举报
回复
引用 10 楼 xizhou704 的回复:
自己测试了一下,发现没出现错误
你有没有改什么东西,直接用上面的代码吗
pbkok 2013-05-15
  • 打赏
  • 举报
回复
xizhou704 2013-05-14
  • 打赏
  • 举报
回复
自己测试了一下,发现没出现错误
pbkok 2013-05-14
  • 打赏
  • 举报
回复
谁能测试一下,看会不会出现同样错误
pbkok 2013-05-14
  • 打赏
  • 举报
回复
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下了
神探狄仁杰 2013-05-14
  • 打赏
  • 举报
回复
你是怎么引入jar的,是不是少了jar的缘故呢
pbkok 2013-05-14
  • 打赏
  • 举报
回复
我也很纳闷,为什么通过main方法调用就没事
神探狄仁杰 2013-05-14
  • 打赏
  • 举报
回复
应该是Persistence.xml这个文件,没有加载。
pbkok 2013-05-14
  • 打赏
  • 举报
回复
有hibernate-entitymanager.jar这个包 Persistence.xml也没放错地方 我前边有一个Test类 用main方法就可以插入数据 但是通过网页访问servlet就不行啊
forgetsam 2013-05-14
  • 打赏
  • 举报
回复
Persistence.xml放错地方了。
  • 打赏
  • 举报
回复
没有hibernate-entitymanager.jar包?
pbkok 2013-05-14
  • 打赏
  • 举报
回复
没人解决吗,快来高手啊

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧