为什么Eclipse不生成完整的persistence.xml?

时间:2014-07-15 06:52:09

标签: java xml eclipse jpa persistence

我有JPA 2.1 + EclipseLink + MySQL的Vaadin项目。

在项目设置中的eclipse中,我正确地设置了与base和驱动程序的连接。没有问题我"从表"生成实体,但persistence.xml没有关于驱动程序,连接,登录,传递给DB的信息。

我的自动生成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="RadiologicalWarehouse">
        <class>pl.intibs.rw.entitites.Message</class>
        <class>pl.intibs.rw.entitites.Part</class>
        <class>pl.intibs.rw.entitites.Role</class>
        <class>pl.intibs.rw.entitites.Sample</class>
        <class>pl.intibs.rw.entitites.SampleHistory</class>
        <class>pl.intibs.rw.entitites.User</class>
    </persistence-unit>
</persistence>

如果我使用简单查询运行我的应用程序,我当然会例外:

javax.servlet.ServletException: com.vaadin.server.ServiceException: javax.persistence.PersistenceException: Exception [EclipseLink-4021] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Exception Description: Unable to acquire a connection from driver [null], user [null] and URL [null].  Verify that you have set the expected driver class and URL.  Check your login, persistence.xml or sessions.xml resource.  The jdbc.driver property should be set to a class that is compatible with your database platform
    com.vaadin.server.VaadinServlet.service(VaadinServlet.java:239)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

如果JPA已在项目中定义了连接,为什么不自动生成此持久性?

屏幕截图设置JPA:http://i.imgur.com/T2oEdHA.png

1 个答案:

答案 0 :(得分:0)

根据我的理解,您已将Jpa插件的参数设置为eclipse,这与将参数设置为持久性提供程序有很大不同。首先,你必须决定persitent提供什么,并在persistence.xml中与其他参数一起指定它。

这是使用eclipseLink的persistence.xml的一个例子:

        <persistence>

        <persistence-unit name="myUnit">
          <provider>yourProvider</provider>

          <class>it.myCompany.domain.MyFirstClass</class>
          <class>it.myCompany.domain.MySecondClassClass</class>

          <properties>

             <property name="javax.persistence.jdbc.driver" value="${driverClass}" />
             <property name="javax.persistence.jdbc.url" value="${connectionURL}" />
             <property name="javax.persistence.jdbc.user" value="${username}" />
             <property name="javax.persistence.jdbc.password" value="${password}" />
             <property name="eclipselink.logging.level" value="info"/>


          </properties>


          <shared-cache-mode>NONE</shared-cache-mode>


        </persistence-unit>

    </persistence>