Я использую кодовый код Swagger для создания моделей Java, которые будут использоваться на сервере Spring REST, и хотел бы узнать, как заставить 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 автоматически выставлял эти сгенерированные классы как API-интерфейсы REST, - это добавить следующее в мой pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Тогда я мог бы создать репозитории JPA с Spring-Data, как показано ниже:
public interface RackRepository extends CrudRepository<Rack, Long> {
}