【问题标题】:Generate Java classes from Database Schema without persistence unit从无持久性单元的数据库模式生成 Java 类
【发布时间】:2017-01-09 14:53:38
【问题描述】:

我正在使用 Spring Boot,我想从 IntelliJ 中的数据库模式生成 Java 注释类。

我去Persistence -> Generate Persistence Mapping -> By Database Schema,但我无法生成类,因为我没有persistence.xml文件,所以我得到了错误:

JPA 注释映射需要至少一个持久性单元

我正在使用 Spring Boot,所以...我该怎么做?

【问题讨论】:

    标签: java intellij-idea spring-boot spring-data-jpa


    【解决方案1】:

    如果您使用的是 Maven,则可以使用 hibernate3-maven-plugin 以及 .reveng.xml 文件和 Hibernate 连接属性来完成。

    以下是我几个月前在http://tech.asimio.net/2016/08/04/Integration-Testing-using-Spring-Boot-Postgres-and-Docker.html#generating-jpa-entities-from-database-schema发布的博客中的一个部分的示例

    pom.xml

    ...
    <properties>
    ...
      <postgresql.version>9.4-1206-jdbc42</postgresql.version>
    ...
    </properties>
    ...
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>hibernate3-maven-plugin</artifactId>
      <version>2.2</version>
        <configuration>
          <components>
            <component>
              <name>hbm2java</name>
              <implementation>jdbcconfiguration</implementation>
              <outputDirectory>target/generated-sources/hibernate3</outputDirectory>
            </component>
          </components>
          <componentProperties>
            <revengfile>src/main/resources/reveng/db_dvdrental.reveng.xml</revengfile>
            <propertyfile>src/main/resources/reveng/db_dvdrental.hibernate.properties</propertyfile>
            <packagename>com.asimio.dvdrental.model</packagename>
            <jdk5>true</jdk5>
            <ejb3>true</ejb3>
          </componentProperties>
        </configuration>
        <dependencies>
        <dependency>
          <groupId>cglib</groupId>
          <artifactId>cglib-nodep</artifactId>
          <version>2.2.2</version>
        </dependency>
        <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <version>${postgresql.version}</version>
        </dependency>              
      </dependencies>
    </plugin>
    ...
    

    db_dvdrental.reveng.xml

    ...
    <hibernate-reverse-engineering>
      <schema-selection match-schema="public" />
    </hibernate-reverse-engineering>
    

    db_dvdrental.hibernate.properties

    hibernate.connection.driver_class=org.postgresql.Driver
    hibernate.connection.url=jdbc:postgresql://localhost:5432/db_dvdrental
    hibernate.connection.username=user_dvdrental
    hibernate.connection.password=changeit
    

    生成实体

    mvn hibernate3:hbm2java
    

    JPA 实体在 target/generated-sources/hibernate3 生成,生成的包需要复制到 src/main/java。

    同样,http://tech.asimio.net/2016/08/04/Integration-Testing-using-Spring-Boot-Postgres-and-Docker.html 提供了更好的说明和演示源代码来完成从现有架构生成 JPA 实体。

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2020-10-03
      • 1970-01-01
      • 2011-05-25
      相关资源
      最近更新 更多