2017-09-21 92 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

我已經該行代碼,也是行家的更新之後,我同樣的問題... –

相關問題