Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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在mysql的Enum type列中插入两个以上的值?_Java_Spring_Hibernate_Jpa - Fatal编程技术网

如何使用java在mysql的Enum type列中插入两个以上的值?

如何使用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)

在我的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);

    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定义如下:my
TimetableVO.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枚举的表。然后您应该选择上面提到的字符串选项。