从数据库模式生成Java类而没有持久性单元

时间:2017-01-09 14:53:39

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

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

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

  

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

我在Spring Boot中,所以......我怎么能这样做?

1 个答案:

答案 0 :(得分: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实体。