使用eclipselink时在哪里放置persistence.xml?

时间:2014-02-19 20:01:31

标签: java jpa vaadin vaadin7

我正在尝试使用JPA EclipseLink执行vaadin7应用程序。我在META-INF上创建了一个文件夹src/,但无效,并在下面返回此错误:

javax.servlet.ServletException: com.vaadin.server.ServiceException:   javax.persistence.PersistenceException: No Persistence provider for EntityManager named myapp
com.vaadin.server.VaadinServlet.service(VaadinServlet.java:240)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 

我在Build-Path和WEB-INF/lib中添加了所有广告,persistences.xml中的src/META-INF显示在下方。

<?xml version="1.0" encoding="UTF-8"?>
<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" 
    xmlns="http://java.sun.com/xml/ns/persistence">

  <persistence-unit name="myapp" transaction-type="RESOURCE_LOCAL">
      <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
      <class>com.example.testejpa.HelloWorld</class>

      <properties>
           <property name="javax.persistence.jdbc.driver" value="com.mysq.jdbc.Driver" />
           <property name="javax.persistence.jdbc.url" value="jdbc:mysql://xxx.xxx.xxx.xxx:3306/mydb" />
           <property name="javax.persistence.jdbc.user" value="user" />
           <property name="javax.persistence.jdbc.password" value="pass" />
           <property name="eclipselink.logging.level" value="FINE"/>  
    </properties>

    </persistence-unit>
</persistence> 

知道这个例外的原因吗?

2 个答案:

答案 0 :(得分:1)

该文件名为persistence.xml而不是persistences.xml。

必须将其放在META-INF文件夹中。确保此文件夹包含在WEB-INF文件夹中。

来自Java EE 6 Tutorial

  

如果将持久性单元打包为WAR文件中的一组类,   persistence.xml应该位于WAR文件中   WEB-INF / classes / META-INF目录。

     

如果将持久性单元打包在一个JAR文件中   包含在WAR或EAR文件中的JAR文件应位于   任

     
      
  • WAR的WEB-INF / lib目录
  •   
  • EAR文件的库目录
  •   

答案 1 :(得分:0)

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

你有一个persistanceProvider

正在寻找EntityManager提供商。 EntityManager用于将数据保存到数据库中。 我想这可能是问题所在,你需要将它添加到你的persisteance.xml文件中。