我需要插入两个名为:BeginHour和EndHour日期和日历类型的列。
我有一个生成BeginHour的方法,然后我将其修改为EndHour。最后我调用我的DAO方法将它们插入到我的表中。
问题是我找到了变量' cal'的最后一次修改。进入两列。
例如,如果BeginHour是2014-03-24 15:23:10,EndHour应该是2014-03-24 15:28:20 但在我的表格中,我发现EndHour:2014-03-24 15:28:20进入两列。
Calendar cal = mock.randomBeginHour();
consoApp.setBeginHour(cal);
cal.add(Calendar.MINUTE, +5);
cal.add(Calendar.SECOND, +10);
consoApp.setEndHour(cal);
dao.addConsoAppel(consoApp)
答案 0 :(得分:2)
您对Calendar
和beginHour
使用相同的endHour
对象参考。改为创建两个不同的Calendar
。您可以使用Calendar
轻松创建另一个Calendar#getInstance()
实例,并在第一个日历中指定时间以设置另一个日历的开始时间。在代码中:
Calendar cal = mock.randomBeginHour();
consoApp.setBeginHour(cal);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(cal.getTime());
cal2.add(Calendar.MINUTE, +5);
cal2.add(Calendar.SECOND, +10);
consoApp.setEndHour(cal2);
dao.addConsoAppel(consoApp);
答案 1 :(得分:0)
这是因为变量cal的值是通过引用传递的。所以beginHour和endHour都得到了相同的价值。您应该为endHour创建一个新的Calendar实例,将其值分配给beginHour,然后执行添加