在我的Java Program Enum中这样..
public enum WeekdayType {
MONDAY(Calendar.MONDAY), TUESDAY(Calendar.TUESDAY), WEDNESDAY(
Calendar.WEDNESDAY), THURSDAY(Calendar.THURSDAY), FRIDAY(
Calendar.FRIDAY), SATURDAY(Calendar.SATURDAY), SUNDAY(
Calendar.SUNDAY);
private int day;
private WeekdayType(int day) {
this.day = day;
}
public int getDay() {
return day;
}
}
我的Hibernate bean定义为{my TimetableVO.java
@Column(name="REPEAT_DAYS")
@Enumerated(EnumType.STRING)
private WeekdayType repeatDays;// And Setter and Getters....
在我的服务课中,我这样做..
String totalDays="MONDAY,SUNDAY,FRIDAY,SATURDAY"
public void createEvent(TimetableVO timetableVO) {
WeekdayType weekday = null;
for (String day : totalDays.split(",")) {
weekday = WeekdayType.valueOf(day);
}
timetableVO.setRepeatDays(weekday);
......
......
......
entityManager.persist(timetableVO);
}
但问题是在数据库列中添加最后一个值...这意味着它覆盖以前的值
对于Ex:上面的字符串SATURDAY
仅插入数据库,但我想插入所有值,如MONDAY,SUNDAY,FRIDAY,SATURDAY
...给我建议..
答案 0 :(得分:2)
更改列类型
private WeekdayType repeatDays;
应更改为String type
private String repeatDays;
将您的csv设置为此列。
其他选择是
private List<WeekdayType> repeatDays;
使用@JoinTable
注释
将创建另一个映射表。处理许多关系。
答案 1 :(得分:1)
尝试在单个列中保存更多值是关系数据库中的概念错误。
解决方案可能是创建另一个表,并在TimeTable
和新创建的表之间创建关系。
第二种不太灵活的替代方案,可以创建7个不同的属性(以及7个不同的列),每个属性相对于一天,而无需创建新表,因此您可以:
@Column(name="MONDAY")
private boolean repeatOnMonday;
@Column(name="TUESDAY")
private boolean repeatOnTuesday;
//...