一周中的多天建模

时间:2011-01-31 16:13:08

标签: java date dayofweek

这是我第二次遇到对象和工作日之间的一对多关系,我不确定我是否以最佳方式对其进行建模:

@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;
}

有没有人遇到更好的方法呢?

我的要求是从数据库中检索与{* 1}}匹配的所有实例,即不需要检查多天,例如mon = 1&&周二= 1

2 个答案:

答案 0 :(得分:3)

在对一组中有限数量的项目进行建模时,通常最好使用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);

答案 1 :(得分:0)

如何创建一周中的日期枚举,然后有一个存储适用日期的私有数组?如果你想获得幻想,你可以有一些结构(比如Set,我认为不允许重复),而不是防止重复的数组。

如果你还在数据库中使用它,你运行什么样的查询来获取数据,你使用什么样的表结构(枚举解决方案可能不适用于所有数据库)?