我正在使用 Swagger codegen 创建要在 Spring REST 服务器中使用的 Java 模型,并且想知道如何让 Swagger 将每个模型声明为 JPA 实体。
我用以下代码生成代码swagger-codegen-maven-plugin
如下:
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.4.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/openApi/Rack.json</inputSpec>
<language>spring</language>
<groupId>com.me</groupId>
<artifactId>rest-server</artifactId>
<apiPackage>com.me.rest.api</apiPackage>
<modelPackage>com.me.rest.model</modelPackage>
<invokerPackage>com.me.rest.invoker</invokerPackage>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
<java8>true</java8>
<dateLibrary>java8</dateLibrary>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
正如我现在所得到的,这是生成的缩写 java 代码:
@Validated
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "...")
public class Rack {
@JsonProperty("id")
private Long id = null;
@JsonProperty("name")
private String name = null;
...
}
如何让 Swagger 添加 @Entity 和 @Id JPA 注释,如下所示?
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Validated
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "...")
public class Rack {
@Id
@JsonProperty("id")
private Long id = null;
@JsonProperty("name")
private String name = null;
...
}
这样,我所要做的就是让 Spring 自动将这些生成的类公开为 REST API,将以下内容添加到我的pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
然后我可以使用 Spring-Data 创建 JPA 存储库,如下所示:
public interface RackRepository extends CrudRepository<Rack, Long> {
}