【问题标题】:JPA and web appJPA 和网络应用程序
【发布时间】:2015-06-07 21:45:08
【问题描述】:

我正在构建一个简单的 webapp 来练习 java web 开发。我正在使用 Netbeans 和 maven,我尝试手动添加 JPA 支持,添加以下文件,这是 JPA 中的标准配置文件。

src/main/resources/META-INF/persistence.xml

我还有一个简单的实体类:

package com.pet.shop.repository;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Animal implements Serializable{
    @Id
    private int id;
}

然后我尝试像这样调用我的 entitymanager:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("PetShopJPA");

但是我收到以下错误:

我的 pom.xm 文件具有以下依赖项:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.35</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.17</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

我的 web.xml 只有一个 servlet 配置:

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>IndexServlet</servlet-name>
        <servlet-class>com.pet.shop.servlets.IndexServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

我的 tomcat /lib 有:

我的 persistence.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" 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_1_0.xsd">
  <persistence-unit name="PetShopJPA" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>com.pet.shop.repository.Animal</class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/petshop"/>
      <property name="javax.persistence.jdbc.user" value="root"/>
      <property name="javax.persistence.jdbc.password" value="m$1234"/>
    </properties>
  </persistence-unit>
</persistence>

请帮忙。

【问题讨论】:

  • 请添加persistence.xml
  • 我添加了我的 persistence.xml

标签: java hibernate maven jpa


【解决方案1】:

您需要在您的 persistence.xml 中配置您的持久化提供程序。

<persistence>
    <persistence-unit name="PetShopJPA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>...</jta-data-source>
        <...>...</...>
        ...
        ...
    </persistence-unit>
</persistence>

你的 persistence.xml 配置是什么?

@编辑

根据您选择的提供者,您需要为提供者添加 Maven 依赖项。

Hibernate Provider 示例:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.3.2.GA</version>
</dependency>
<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>

【讨论】:

  • 我添加了我的 persistence.xml
  • 我正在使用 org.hibernate.ejb.HibernatePersistence 但我没有休眠依赖项。
【解决方案2】:

我决定使用 Eclipse IDE 并解决了这个问题。 Netbeans 在我的情况下不起作用。我还决定使用 EclipseLink 2.x。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2019-08-09
    • 2016-12-08
    • 2022-08-04
    • 2012-12-14
    • 2011-02-01
    • 2016-01-24
    • 2015-09-19
    • 2020-09-06
    相关资源
    最近更新 更多