В моем проекте Spring Boot у меня есть два DTO, которые я пытаюсь проверить, LocationDto и BuildingDto.LocationDto имеет вложенный объект типа BuildingDto.
Это мои DTO:
LocationDto
public class LocationDto {
@NotNull(groups = { Existing.class })
@Null(groups = { New.class })
@Getter
@Setter
private Integer id;
@NotNull(groups = { New.class, Existing.class })
@Getter
@Setter
private String name;
@NotNull(groups = { New.class, Existing.class, LocationGroup.class })
@Getter
@Setter
private BuildingDto building;
@NotNull(groups = { Existing.class })
@Getter
@Setter
private Integer lockVersion;
}
BuildingDto
public class BuildingDto {
@NotNull(groups = { Existing.class, LocationGroup.class })
@Null(groups = { New.class })
@Getter
@Setter
private Integer id;
@NotNull(groups = { New.class, Existing.class })
@Getter
@Setter
private String name;
@NotNull(groups = { Existing.class })
@Getter
@Setter
private List<LocationDto> locations;
@NotNull(groups = { Existing.class })
@Getter
@Setter
private Integer lockVersion;
}
В настоящее время я могу подтвердить в своем LocationDto
, что свойства name
и building
не равны нулю, но Я не могу проверить наличие идентификатора свойства, которыйвнутри здания .
Если я использую аннотацию @Valid
для свойства building
, он будет проверять все его поля, но в этом случае я хочу только проверить его id
.
Как это можно сделать с помощью проверки javax?
Это мой контроллер:
@PostMapping
public LocationDto createLocation(@Validated({ New.class, LocationGroup.class }) @RequestBody LocationDto location) {
// save entity here...
}
Это правильное тело запроса: (не должно выдавать ошибки проверки)
{
"name": "Room 44",
"building": {
"id": 1
}
}
Это неверное тело запроса: (должно выдать ошибки проверки, потому что отсутствует идентификатор здания )
{
"name": "Room 44",
"building": { }
}