Я хочу установить только фиксированные параметры из DTO.У меня есть 3 Entity (таблицы), которые связаны с FK или PK.Поэтому, когда я получаю данные из базы данных с использованием идентификатора таблицы A. 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 Entity.Теперь я получаю данные от A_id.И создал aDTO, как:
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 полей, но я хочу получить только 2 поля данных в ответ, используя тот же DTO.поэтому я буду использовать тот же dto для всех других запросов и манипулировать ответом в соответствии с потребностями.