首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JavaDB上将JPA与JavaEE7、Glassfish 4.1和Maven一起使用

如何在JavaDB上将JPA与JavaEE7、Glassfish 4.1和Maven一起使用
EN

Stack Overflow用户
提问于 2014-09-19 22:05:51
回答 1查看 3.1K关注 0票数 0

我有一个简单的WebJavaEE7项目从Maven原型(NetBeans:新项目...来自原型-> webapp-Javaee7的javaee项目),我想使用->来将类映射到数据库表。因此,我创建了一个新的JavaDB数据库,并在Glassfish中创建了相应的连接池和JDBC-Ressource。现在,我生成了一个非常简单的Entity-Class,其中包含所有必要的注释。NetBeans给了我一个提示,说持久化单元没有声明,所以我创建了一个persistence.xml文件,如下所示:

代码语言:javascript
运行
复制
<?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自动添加了以下依赖项:

代码语言:javascript
运行
复制
<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提供的那些示例项目。所以我假设在persistence.xml文件中需要一些额外的maven-dependency或一些特殊的属性。我尝试了几乎所有我能在互联网上找到的东西,但似乎都不起作用……

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 04:48:16

你绝对没有做错什么。似乎从JPA 2.1 / Glassfish 4.1开始,在创建表之前,您需要在某个地方使用PU。我知道在Glassfish 3.x中不是这样的,一开始我也有点困惑。在代码中的某个地方,即EJB中,使用以下代码就足够了:

代码语言:javascript
运行
复制
@PersistenceContext
private EntityManager em;

代码语言:javascript
运行
复制
@PersistenceContext(unitName = "com.mycompany_mavenproject1_war_1.0-SNAPSHOTPU")
private EntityManager em;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25935866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档