Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一周中的多天建模_Java_Date_Dayofweek - Fatal编程技术网

Java 一周中的多天建模

Java 一周中的多天建模,java,date,dayofweek,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;

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

@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

当对集合中的有限个项目建模时,通常最好使用

您可以在课堂上这样使用:

class YourClass {
    private Set<DayOfWeek> activeDays;

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

yourclass.addActiveDay(DayOfWeek.Friday);
classyourclass{
私人活动日;
公共作废addActiveDay(DayOfWeek日){
添加(天);
}
}
...
yourclass.addActiveDay(星期五,星期五);

如何创建一周中的天数枚举,然后使用一个专用数组存储适用的天数?如果你想变得有趣,你可以有一些结构(比如一个
集合
,我认为它不允许重复),而不是一个防止重复的数组


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

如:
MyObject{Set activeWeekdays}
?看起来数据库的开销要大得多?要加入的额外表,可能是7 varchar(9)。@James,你可能是对的。这不会比用整数表示天数更好。然而,通常最好的做法是先设计好代码,然后再考虑优化。你不能确定使用枚举会太慢。我会将Mysql/InnoDb与一个表
MyObjects(ID:int,FOO:varchar,星期一:bit,星期二:bit…星期天:bit)
一起使用,然后查询例如
where MONDAY=1
@James:Mysql有枚举,它们看起来确实与Java兼容(尽管我自己没有尝试过):…尽管这需要修改现有的表和查询。
class YourClass {
    private Set<DayOfWeek> activeDays;

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

yourclass.addActiveDay(DayOfWeek.Friday);