仅在DTO中设置特定参数使用映射器

时间:2018-06-13 07:55:03

标签: spring hibernate jpa

我想只从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并根据需要操纵响应。

0 个答案:

没有答案