gpt4 book ai didi

java - Swagger注解遍历DB中所有表

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:15 25 4
gpt4 key购买 nike

我正在查看一个提供 REST API 来访问数据库的 Java 应用程序。除了 JAX-RS 之外,它还使用 Swagger 来生成文档和测试网站。在其中一条路线上,我发现 Swagger 给出的结果示例非常长(超过 140000 行):

Swagger problem

该路由使用以下代码定义:

@GET
@Path("/getUsers")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Operation(
summary = "Get available users",
responses = {
@ApiResponse(responseCode = "200", content = @Content(schema = @Schema(implementation = OauthClientDetailsEntity.class)), description = "Get users list"),
@ApiResponse(responseCode = "401", content = @Content(schema = @Schema(implementation = ErrorResponse.class)), description = "Error: Unauthorized"),
@ApiResponse(responseCode = "500", description = "Error: Internal Server Error")
}
)
public Response getUsers() {
// ....
}

“麻烦制造者”是idCliente字段,它在实体类中的定义如下:

@JoinColumn(name = "idCliente", referencedColumnName = "id")
@ManyToOne
private Cliente idCliente;

Cliente(英文为customer)与数据库中的很多表相关,所以我认为问题在于Swagger正在遍历所有这些表,所以示例结果很长。该类有 40 多个字段,如下所示:

@Entity
@Table(name = "cliente")
@XmlRootElement
public class Cliente implements Serializable {
@OneToMany(mappedBy = "idCliente")
private List<FacturaCliente> facturaClienteList;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "idCliente")
private List<OauthClientDetailsEntity> oauthClientDetailsEntityList;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "cliente")
private List<OauthAccessTokenEntity> oauthAccessTokenEntityList;

@Column(name = "codigoPlantillaFacturacion")
private String codigoPlantillaFacturacion;
// etc...
}

我是 Swagger 新手,所以我不确定如何处理这个问题。有没有办法让Swagger不遍历所有相关的表?或者,还有什么其他方法会更有效?

提前致谢,

最佳答案

您可以使用 @ApiModelProperty(hidden=true) 忽略此字段 但您必须意识到所有这些内容无论如何都会被渲染。如果您不需要此字段,更好的方法是不渲染它(例如 @JsonIgnore 注释)。最好的选择是仅返回具有必要字段的 DTO,而不是返回具有层次结构的整个实体。

关于java - Swagger注解遍历DB中所有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59424095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com