Проверка гибернации - группировка для вложенных классов с использованием @GroupSequence - PullRequest
0 голосов
/ 02 января 2019

У меня такая проблема : моя группа проверки не работает правильно. Вот мой класс BookForm:

@GroupSequence({BookForm.class, NameGroup.class, ReservationGroup.class})
public class BookForm {
    @NotEmpty(message = "Tenant first name should be filled out.", groups = NameGroup.class)
    private String tenantFirstName;

    @NotEmpty(message = "Tenant last name should be filled out.", groups = NameGroup.class)
    private String tenantLastName;

    @Valid
    @NotReserved(message = "Unfortunately, current apartment is already booked for these dates.", groups = ReservationGroup.class)
    private ReservationInfo reservationInfo;
    // getters and setters...
}

А вот класс ReservationInfo:

@GroupSequence({ReservationInfo.class, DateCorrectnessGroup.class})
public class ReservationInfo {

    private long apartmentId;

    @Pattern(regexp = "^(0[1-9]|[12]\\d|3[01])\\/(0[1-9]|1[0-2])\\/([12]\\d{3})$",
        message = "Incorrect check in date. Please, try to book again.", groups = DateCorrectnessGroup.class)
    private String checkInDate;

    @Pattern(regexp = "^(0[1-9]|[12]\\d|3[01])\\/(0[1-9]|1[0-2])\\/([12]\\d{3})$",
        message = "Incorrect check out date. Please, try to book again.", groups = DateCorrectnessGroup.class)
    private String checkOutDate;
    // getters and setters...
}

Я хотел бы проверить свои классы в такой последовательности:

  1. Проверка вложенных полей класса (DateCorrectnessGroup)
  2. Проверка полей имени (NameGroup)
  3. Проверить, что текущие даты не зарезервированы (ReservationGroup)

Но в настоящее время я получаю ошибки проверки DateCorrectnessGroup вместе с ошибками NameGroup или ReservationGroup.

DateCorrectnessGroup, NameGroup, ReservationGroup являются пустыми интерфейсами.

public interface DateCorrectnessGroup {}
public interface NameGroup {}
public interface ReservationGroup {}

Где проблема?

1 Ответ

0 голосов
/ 02 января 2019

Ввести новую фиктивную аннотацию для каскадирования без применения @NotReserved для reservationInfo.Скажем, новая аннотация - @FooBar (или мы можем использовать @NotNull?)

@GroupSequence({DateCorrectnessGroup.class, NameGroup.class, ReservationGroup.class, BookForm.class})
public class BookForm {

    @NotEmpty(message = "...", groups = NameGroup.class)
    private String tenantFirstName;

    @NotEmpty(message = "...", groups = NameGroup.class)
    private String tenantLastName;

    @Valid
    @FooBar(groups = DateCorrectnessGroup.class)  // Could use @NotNull?
    @NotReserved(message = "...", groups = ReservationGroup.class)
    private ReservationInfo reservationInfo;

    // getters and setters...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...