我使用的是Spring Boot,我想从IntelliJ中的数据库模式生成Java注释类。
我转到Persistence -> Generate Persistence Mapping -> By Database Schema
,但我无法生成类,因为我没有persistence.xml文件,所以我收到错误:
JPA注释映射至少需要一个持久性单元
我在Spring Boot中,所以......我怎么能这样做?
答案 0 :(得分:1)
如果您使用的是Maven,可以使用hibernate3-maven-plugin
以及.reveng.xml
文件和Hibernate
连接属性来完成。
<强>的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实体。