2016-04-03 14 views
0

セットアップのいくつかの側面を見落としていますが、どこを見ているのかわかりません。 Eclipse、Tomcat、およびMySQL。サーブレットでは例外があります:EmployeeServiceというEntityManagerの永続性プロバイダはありません。 MySQLサーバが稼動していて、プロジェクトの接続を設定しました。ビルドパスにeclipselink jarライブラリがあります。私はそれを働かせるために何をチェックすることができますか?例外を使用してJPA永続性を設定するEntityManagerの永続性プロバイダーがありません

Employee.java

package servlet; 
import java.io.Serializable; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="employee") 
public class Employee implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    private int id; 
    private String name; 
    private double salary; 

    public Employee() { } 
    public Employee(int id){ this.id = id; } 

    public int getId() { return this.id; } 
    public void setId(int id) { this.id = id; } 

    public String getName(){ return this.name; } 
    public void setName(String name){ this.name = name; } 

    public double getSalary(){ return salary; } 
    public void setSalary(double salary){ this.salary = salary; } 

    public String toString(){ return "Employee: " + name; } 
} 

EmployeeService.java

package servlet; 

import java.util.List; 
import javax.persistence.EntityManager; 
import javax.persistence.TypedQuery; 

public class EmployeeService { 
    protected EntityManager em; 

    public EmployeeService(EntityManager em){ 
     this.em = em; 
    } 

    public Employee createEmployee(int id, String name, Double salary){ 
     Employee emp = new Employee(id); 
     emp.setName(name); 
     emp.setSalary(salary); 
     em.persist(emp); 
     return emp; 
    } 

    public List<Employee> findAllEmployees(){ 
     TypedQuery<Employee> query = em.createQuery("SELECT e FROM Employee e", Employee.class); 
     return query.getResultList(); 
    } 
} 

関連するサーブレットコード

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

    EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmployeeService"); 
    EntityManager em = emf.createEntityManager(); 
    EmployeeService service = new EmployeeService(em); 
    String name = request.getParameter("name"); 
    em.getTransaction().begin(); 
    Employee emp = service.createEmployee(158, name, 279445.00); 
    em.getTransaction().commit(); 
    System.out.println(emp); 

    List<Employee> list = service.findAllEmployees(); 
    for(Employee e : list){ 
     System.out.println(e); 
    } 

} 

persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="4_WEB_JPA" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>servlet.Employee</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/company"/> 
      <property name="javax.persistence.jdbc.user" value="root"/> 
      <property name="javax.persistence.jdbc.password" value=""/> 
     </properties> 
    </persistence-unit> 
</persistence> 
+0

「EmployeeService」という名前の永続性ユニットを探していますが、定義したパーシスタンスユニットは「4_WEB_JPA」になります。 –

+0

ありがとうございました。 – mathematted

答えて

0

永続ユニットは、あなたのpersistent.xml4_WEB_JPAという名前ので、あなたは

EntityManagerFactory emf = Persistence.createEntityManagerFactory("4_WEB_JPA"); 

EntityManagerFactoryを開始することができます。

関連する問題