2015-03-25 46 views
0

我想實現一個簡單的ORM程序,使用JPA和hibernate。我想盡可能地將其寫成可移植的,這樣當我提供不同的持久性提供者時,只需要更改persistence.xml文件。以下是我擁有的persistence.xml文件。hibernate和mysql的Persistence.xml設置說「沒有EntityManager的持久性提供者」

<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="JPA_Project" transaction-type="RESOURCE_LOCAL"> 
     <description> 
      Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide 
     </description> 

     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>com.tutorial.prj.Book</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpatestdb" /> 
      <property name="javax.persistence.jdbc.user" value="root" /> 
      <property name="javax.persistence.jdbc.password" value="123" /> 

      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.hbm2ddl.auto" value="create" /> 
     </properties> 

    </persistence-unit> 

</persistence> 

上面的persistence.xml文件是否正確?當我通過eclipse運行程序時,它說Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named JPA_Project

我已經將hibernate jars和mysql連接器添加到構建路徑。這裏有什麼問題?我還看到了互聯網上使用的不同類型的persistence.xml文件,如下所示。

<persistence-unit name="my_schema"> 
    ... classes ... 

    <properties> 
     <property name="hibernate.connection.url" value="jdbc:mysql://URL:3306/my_schema"></property> 
     <property name="hibernate.connection.username" value="my_user"></property> 
     <property name="hibernate.connection.password" value="my_pass"></property> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property> 
     <property name="hibernate.connection.nombre" value="my_schema" /> 

    </properties> 
</persistence-unit> 

在這裏,屬性名是從我用的有所不同,背後是什麼使用這些屬性名稱的原因是什麼?哪個應該是正確的persistence.xml文件,以便於移植。

請注意,這不是一個Web應用程序。這個問題是否出現,因爲它不是一個Web應用程序?可以在本地桌面應用程序中使用休眠嗎?我的persistence.xml文件存儲在\JPA_Project\src\META-INF文件夾中。

+0

你接着說:在你的POM冬眠,entitymanager'依賴? – 2015-03-25 06:12:28

+0

我沒有使用過Maven。我想在沒有maven的情況下構建這個程序 – DesirePRG 2015-03-25 06:13:24

+1

好吧,那麼你添加了'hibernate-entitymanager'相關的jar包嗎? – 2015-03-25 06:14:18

回答

2

您需要添加hiberntare-entitymanager的jar包。

如果您正在使用Maven,那麼你需要添加依賴性:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>${hibernate.version}</version> 
</dependency> 
+0

你是否也可以解決問題的第二部分?關於另一個persistence.xml文件 – DesirePRG 2015-03-25 06:49:10

+0

如果你正在討論使用hibernate桌面應用程序(swing),那麼我們可以。或者如果我失去了一些東西,請告訴我。在第二個persistence.xml文件中使用 – 2015-03-25 07:44:48

+0

,而不是javax.persistence.jdbc.url使用hibernate.connection.url。而其他幾個屬性名稱也不同。什麼是使用這些屬性名稱的原因? – DesirePRG 2015-03-25 11:41:52

相關問題