2017-09-21 43 views
0

我正试图用Java和Tomcat开发一个简单的其余API项目。 HTTP请求正常工作,但我通过实现数据库MySQL来存储数据,从而发现了很多问题。这是我的persistence.xml文件,即位于爪哇资源/ META-INF:没有用于Tomcat的实体管理器的持久性提供者

<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_2_0.xsd" 
version="2.0"> 

<persistence-unit name="PERSISTENCE"> 
    <description> Hibernate JPA Configuration Example</description> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <class>com.resourceserver.Person</class> 
    <properties> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver" /> 
     <property name="javax.persistence.jdbc.url" 
      value="jdbc:mysql://localhost:3306/RESTResourceServer" /> 
     <property name="javax.persistence.jdbc.user" value="root" /> 
     <property name="javax.persistence.jdbc.password" value="password" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
    </properties> 
</persistence-unit> 

这是我PersonDAO.java和JPAUtil.java类:

public class PersonDao { 

    EntityManager entityManager; 

    public PersonDao() { 
     entityManager = JPAUtil.getEntityManagerFactory().createEntityManager(); 
    } 

    public void storePerson(Person person) { 
     entityManager.persist(person); 
     // people.add(person); 
    } 

    public void deletePerson(Person person) { 
     entityManager.remove(person); 
     // people.remove(person); 
    } 

    public Person findPersonId(int id) { 
     /* 
     * for (Person person : people) { if (person.getId() == id) { return person; } } 
     */ 
     return null; 
    } 

    @SuppressWarnings("unchecked") 
    public List<Person> getAllUsers() { 
     Query query = entityManager.createQuery("Select p From People p "); 
     return query.getResultList(); 
     // return people; 
    } 
} 

public class JPAUtil { 
    private static final String PERSISTENCE_UNIT_NAME = "PERSISTENCE"; 
    private static EntityManagerFactory factory; 

    public static EntityManagerFactory getEntityManagerFactory() { 
     if (factory == null) { 
      factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
     } 
     return factory; 
    } 

    public static void shutdown() { 
     if (factory != null) { 
      factory.close(); 
     } 
    } 
} 

而且在我的Endpoint中,我简单地使用PersonDao persona = new PersonDao()来执行操作;我错在哪里?

回答

0

你缺少持久性提供者(不足为奇!)

很可能是因为添加了JPA API的依赖,但忘了加一个具体的实现如Hibernate或EclipseLink的。这意味着你可以编译整个东西,因为JPA的接口在那里,但是没有实现类。

+0

谢谢您的回复。我应该在哪里提供这些信息?在POM中? –

+0

是的。您必须将hibernate依赖项添加到hibernate-entitymanager到依赖项部分。 org.hibernate作为 的Hibernate的EntityManager 5.2.11.Final fhossfel

+0

我已经该行代码,也是行家的更新之后,我同样的问题... –

相关问题