从现有数据库生成 JPA 2 实体

如何从现有数据库生成符合 JPA2 标准的@Entity?

我发现这个: 问题

目前还不清楚JBoss是否会生成兼容的JPA2,我也想知道是否有供应商独立的方式来做到这一点。


答案 1

你可以使用像Eclipse Dali这样的插件来为你做这个把戏。您可以参考文档 3.11 从表生成实体部分

但是,我不知道有任何特定的供应商独立工具可以做到这一点。


答案 2

尝试使用 OPENJPA 反向映射工具。它们提供了更多的设施,并且易于配置。此示例将澄清。

如果您使用 maven 作为构建工具,请将此条目添加到您的 pom.xml

    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<mainClass>org.apache.openjpa.jdbc.meta.ReverseMappingTool</mainClass>
<commandlineArgs>
    -directory src/main/java -accessType fields
    -useGenericCollections true -package org.yourproject.model
    -metadata none -annotations true
    -innerIdentityClasses false -useBuiltinIdentityClass false
    -primaryKeyOnJoin false
    </commandlineArgs>
<includePluginDependencies>true</includePluginDependencies>
</configuration>
<dependencies>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.CR3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openjpa</groupId>
        <artifactId>openjpa-all</artifactId>
        <version>2.0.1</version>
    </dependency>
</dependencies>
    </plugin>

还要在持久性中添加以下属性.xml该属性位于资源的 META-INF 文件夹中。openjpa 工具将利用这些功能来建立与数据库的连接。

    <properties>
<property name="openjpa.ConnectionUserName" value="${db.username}"/>
<property name="openjpa.ConnectionPassword" value="${db.password}"/>
<property name="openjpa.ConnectionURL" value="${db.url}"/>  
<property name="openjpa.ConnectionDriverName"  value="${db.driver.class}"/>     
   </properties>

要生成实体文件,只需使用 mvn org.codehaus.mojo:exec-maven-plugin:java 在项目目录中启动 maven 目标,它将在所需位置生成文件。


推荐