gpt4 book ai didi

java - 如何在 JavaDB 上将 JPA 与 Java EE 7、Glassfish 4.1 和 Maven 结合使用

转载 作者:行者123 更新时间:2023-12-01 12:30:45 25 4
gpt4 key购买 nike

我从 Maven Archetype 获得了一个简单的 Web Java EE 7 项目(NetBeans:新项目... -> Maven -> 来自 Archetype 的项目 -> webapp-javaee 7)我想使用 JPA 将类映射到数据库表。所以我创建了一个新的JavaDB数据库,并在Glassfish中创建了相应的连接池和JDBC-Ressource。现在我生成了一个非常简单的实体类,具有所有必要的注释。NetBeans给了我一个提示,说没有声明持久性单元,所以我创建了一个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="com.mycompany_mavenproject1_war_1.0-SNAPSHOTPU" transaction-type="JTA">
<jta-data-source>jdbc/testDb</jta-data-source>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>

Maven 自动添加以下依赖项:

<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.5.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
<version>2.5.2</version>
<scope>provided</scope>
</dependency>

然后我构建了该项目并将其部署在 Glassfish 上。即使我没有收到任何错误,它也不起作用,这意味着数据库中没有创建相应的表。

我非常确定与数据库的连接正常,因为它确实可以与 NetBeans 提供的那些示例项目一起使用。所以我认为需要一些额外的 maven 依赖项或 persistence.xml 文件中的一些特殊属性。我尝试了在互联网上可以找到的所有内容,但似乎没有任何效果......

最佳答案

你绝对没有做错任何事。似乎从 JPA 2.1/Glassfish 4.1 开始,您需要在创建表之前在某处使用 PU。我知道 Glassfish 3.x 中不是这样的,一开始我也有点困惑。在代码中的某个位置(即 EJB 中)使用此代码应该就足够了:

@PersistenceContext
private EntityManager em;

@PersistenceContext(unitName = "com.mycompany_mavenproject1_war_1.0-SNAPSHOTPU")
private EntityManager em;

另请参阅此答案:Entity Table is not creating using JPA 2.1

关于java - 如何在 JavaDB 上将 JPA 与 Java EE 7、Glassfish 4.1 和 Maven 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25935866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com