Моделирование нескольких дней недели - PullRequest
1 голос
/ 31 января 2011

Это второй раз, когда я сталкиваюсь с отношением один-много между объектом и днем ​​недели, и я не уверен, что я моделирую его наилучшим образом:

@Entity
MyObject {
    private int id;
    private String foo;
    private boolean monday;
    private boolean tuesday;
    private boolean wednesday;
    private boolean thursday;
    private boolean friday;
    private boolean saturday;
    private boolean sunday;
}

Кто-нибудь сталкивался с лучшим способом сделать это?

Мое требование - извлечь все экземпляры MyObject из БД, которые соответствуют текущему дню недели, т.е. нет необходимости проверять несколько дней, например, mon = 1 && tues = 1

Ответы [ 2 ]

3 голосов
/ 31 января 2011

При моделировании конечного числа предметов в наборе обычно лучше использовать enum.

public enum DayOfWeek {
    Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}

Вы можете использовать это в своем классе следующим образом:

class YourClass {
    private Set<DayOfWeek> activeDays;

    public void addActiveDay(DayOfWeek day){
        activeDays.add(day);
    }
}
...

yourclass.addActiveDay(DayOfWeek.Friday);
0 голосов
/ 31 января 2011

Как насчет создания перечисления дней недели, а затем создания частного массива, в котором хранятся применимые дни? Если вы хотите получить фантазию, вы можете иметь некоторую структуру (например, Set, которая, я думаю, не допускает дублирование), кроме массива, который предотвращает дублирование.

Если вы также используете это с базой данных, какой запрос вы используете для получения данных и какую структуру таблиц вы используете (решения enum могут работать не со всеми базами данных)?

...