我想只从DTO设置固定参数。我有3个实体(表格)与FK或PK连接。因此,当我使用表A的ID从数据库获取数据时,Jpa会给我所有数据及其子项,这正是我想要的。
public class AEntity{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "a_id")
private Long aId;
private String name;
private String model;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_id")
private bEntity bentity;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "c_uid")
private cEntity centity;
@JoinColumn(name = "d_id")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<dEntity> d;
}
像这样我也有B,C,D实体。现在我在这里通过A_id获取数据。并创建了一个像DTO:
public class aDTO {
private Long a_Id;
@JsonProperty(required=true)
private String name;
@JsonProperty(required=true)
private String model;
@Valid
private List<AllbDTO> bList;
private List<AllcDTO> cList;
}
使用此代码:
{
Type targetListType = new TypeToken<List<aDTO>>() {
}.getType();
List<aDTO> aDTOs = mapper.map(AllDAtaByQuery, targetListType);
return aDTOs ;
}
现在“AllDAtaByQuery”它是查询中存储数据的实体对象,并且一切正常。它给我列出了一个带有b表数据的内部列表,依此类推了所有字段。 问:我是否有可能告诉mapper映射我想要的特定字段所以我可以发送特定字段的响应? 像b表有6个字段但我只想通过使用相同的DTO响应2个字段数据。所以我将对所有其他查询使用相同的dto并根据需要操纵响应。