Как написать собственное ограничение, чтобы проверить, что хотя бы одно логическое поле в классе истинно - PullRequest
0 голосов
/ 23 мая 2011

У меня есть класс под названием «Планировщик», который имеет 7 логических полей. Я хочу написать ограничение в hibernate, чтобы проверить, что хотя бы одно логическое поле имеет значение true.

Вот класс "Планировщик".

public class Scheduler {

private String description;

@NotNull
private Boolean sMondays;

@NotNull
private Boolean sTuesdays;

@NotNull
private Boolean sWednesdays;

@NotNull
private Boolean sThursdays;

@NotNull
private Boolean sFridays;

@NotNull
private Boolean sSaturdays;

@NotNull
private Boolean sSundays;

public Scheduler() {

}
}

Может ли кто-нибудь помочь мне в написании упомянутого ограничения.

Спасибо !!!!!!!!!

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Это сложно, потому что вы используете логическое значение вместо простого логического, что создает риск исключений нулевого указателя.

Чтобы упростить логику, я бы изменил каждое объявление поля, чтобы инициализировать его как false. Поскольку вы аннотировали их как @NotNull, я предполагаю, что это будет работать с вашей существующей бизнес-логикой.

Если вы сделаете это, ваша проверка, по крайней мере, одного, будет истинной, просто достигается с помощью ||:

public boolean validateAtLeastOneIsTrue() {
    return getsMondays() || getsTuesdays() || getsWednesdays()
    || getsThursdays() || getsFridays() || getsSaturdays()
    || getsSundays();
}
0 голосов
/ 26 мая 2011

Не зная точного домена, в котором вы работаете, я бы рекомендовал использовать временный тип данных, такой как Календарь. Это позволит вам сделать простой поиск в текущий день недели. Это также делает код более легким в обслуживании

...