如何使用java在mysql的Enum type列中插入两个以上的值?
在我的Java程序中,枚举如下如何使用java在mysql的Enum type列中插入两个以上的值?,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,在我的Java程序中,枚举如下 public enum WeekdayType { MONDAY(Calendar.MONDAY), TUESDAY(Calendar.TUESDAY), WEDNESDAY( Calendar.WEDNESDAY), THURSDAY(Calendar.THURSDAY), FRIDAY( Calendar.FRIDAY), SATURDAY(Calendar.SATURDAY), SUNDAY( Calendar.SUNDAY)
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;
}
}
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);
}
我的HibernateBean定义如下:myTimetableVO.java
@Column(name="REPEAT_DAYS")
@Enumerated(EnumType.STRING)
private WeekdayType repeatDays;// And Setter and Getters....
在我的服务课上我是这样做的
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;
}
}
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);
}
但问题是在数据库列中只添加最后一个值…这意味着它会覆盖以前的值
例如:上面的字符串
SATURDAY
仅在数据库中插入,但我想插入所有值,如周一、周日、周五、周六
…给我建议..更改列类型
private WeekdayType repeatDays代码>
应更改为字符串类型
私有字符串重复天数代码>
将您的csv设置为此列
另一个选择是
私人列表重复天数代码>
带有@JoinTable
注释
这将创建另一个映射表。处理多个关系。在关系数据库中,试图在单个列中保存更多值是一个概念错误。
解决方案可以是创建另一个表,并在时间表
和新创建的表之间创建关系
第二个不太灵活的替代方案是创建7个不同的属性(以及7个不同的列),每个属性相对于一天,而不创建新表,因此您可以:
@Column(name="MONDAY")
private boolean repeatOnMonday;
@Column(name="TUESDAY")
private boolean repeatOnTuesday;
//...
正确,我想在我的列中列出天数。但是在HibernateBean类中,定义如下私有列表repeatDays;但它询问了一些关系或错误。但在我的数据库中,列类型是Enum。。他们对此有问题吗?。枚举类型中不能有多个枚举。我建议将其更改为字符串。@jointable注释需要映射物理表。您应该看到@jointable注释需要另一个表,但我只有时间表,他们没有用于WeekdayType枚举的表。然后您应该选择上面提到的字符串选项。