Ich habe die folgenden zwei Entitätsklassen.Swagger, der ApiModel- und ApiModelProperty-Annotationen in Entitätsklassen nicht scannt, die sich in einer anderen JAR-Datei befinden
Die erste Klasse ist SampleApiEntity
:
package my.company.rest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.Type;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@ApiModel (
value = "SampleApiEntity",
description = "This is a sample entity from the Api package."
)
@Entity
public class SampleApiEntity
implements Serializable
{
public SampleApiEntity() {}
private static final long serialVersionUID = 1L;
@Column (nullable = false)
@ApiModelProperty (
value = "level",
required = true
)
private Integer level;
@Column (length = 255)
@ApiModelProperty (
value = "description"
)
private String description;
@Column (nullable = false)
@ApiModelProperty (
value = "time",
required = true
)
private Timestamp time;
@Id
@Column (
unique = true,
nullable = false
)
@Type (type = "pg-uuid")
@ApiModelProperty (
value = "id",
readOnly = true,
dataType = "uuid",
example = "123e4567-e89b-12d3-a456-426655440000"
)
private UUID sampleApiEntityId;
public String getDescription()
{
return this.description;
}
public Integer getLevel()
{
return this.level;
}
public UUID getSampleApiEntityId()
{
return this.sampleApiEntityId;
}
public Timestamp getTime()
{
return this.time;
}
public void setDescription (String description)
{
this.description = description;
}
public void setLevel (Integer level)
{
this.level = level;
}
public void setSampleApiEntityId (UUID sampleApiEntityId)
{
this.sampleApiEntityId = sampleApiEntityId;
}
public void setTime (Timestamp time)
{
this.time = time;
}
}
Die zweite Klasse ist SampleModelEntity
:
package my.company.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.annotations.Type;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
@ApiModel (
value = "SampleModelEntity",
description = "This is a sample entity from the Model package."
)
@Entity
public class SampleModelEntity
implements Serializable
{
public SampleModelEntity() {}
private static final long serialVersionUID = 1L;
@Column (nullable = false)
@ApiModelProperty (
value = "level",
required = true
)
private Integer level;
@Column (length = 255)
@ApiModelProperty (
value = "description"
)
private String description;
@Column (nullable = false)
@ApiModelProperty (
value = "time",
required = true
)
private Timestamp time;
@Id
@Column (
unique = true,
nullable = false
)
@Type (type = "pg-uuid")
@ApiModelProperty (
value = "id",
readOnly = true,
example = "123e4567-e89b-12d3-a456-426655440000"
)
private UUID sampleModelEntityId;
public String getDescription()
{
return this.description;
}
public Integer getLevel()
{
return this.level;
}
public UUID getSampleModelEntityId()
{
return this.sampleModelEntityId;
}
public Timestamp getTime()
{
return this.time;
}
public void setDescription (String description)
{
this.description = description;
}
public void setLevel (Integer level)
{
this.level = level;
}
public void setSampleModelEntityId (UUID sampleModelEntityId)
{
this.sampleModelEntityId = sampleModelEntityId;
}
public void setTime (Timestamp time)
{
this.time = time;
}
}
Der einzige Unterschied zwischen den beiden Klassen ist, dass sie in separaten JAR-Dateien definiert sind. SampleApiEntity
ist in der gleichen JAR wie die REST-Ressourcenklasse verpackt. SampleModelEntity
ist in einer separaten JAR mit anderen Entitätsklassen verpackt. Die swagger.yaml
-Datei, die generiert wird, enthält beide Klassen, jedoch fehlen Informationen, die von den ApiModel
und ApiModelProperty
Anmerkungen für die Klasse SampleModelEntity
bereitgestellt werden.
Hier ist, was ich in der generierten swagger.yaml
Datei sehe:
SampleApiEntity:
type: "object"
required:
- "level"
- "time"
properties:
level:
type: "integer"
format: "int32"
description: "level"
description:
type: "string"
description: "description"
time:
type: "string"
format: "date-time"
description: "time"
sampleApiEntityId:
type: "string"
format: "uuid"
example: "123e4567-e89b-12d3-a456-426655440000"
description: "id"
readOnly: true
description: "This is a sample entity from the Api package."
SampleModelEntity:
type: "object"
properties:
level:
type: "integer"
format: "int32"
description:
type: "string"
time:
type: "string"
format: "date-time"
sampleModelEntityId:
type: "string"
format: "uuid"
Kann jemand mir helfen zu verstehen, warum die ApiModel
und ApiModelProperty
Anmerkungen nicht ausgegeben in swagger.yaml
Erzeugen?
Ich habe einige der Forschung getan, und ich habe die engt Problem. Das Problem scheint nicht einfach durch die Tatsache verursacht zu sein, dass die 'SampleModelEntity'-Klasse in einem separaten JAR aus den REST-Ressourcenklassen gepackt ist. In der Datei pom.xml für das REST-Ressourcenpaket wird die Abhängigkeits-JAR, die 'SampleModelEntity' enthält, mit dem Geltungsbereich' bereitgestellte' deklariert. Der Bereich scheint das Problem zu verursachen. –