在我的代码中..
List<WeekdayType> weekday = new ArrayList<WeekdayType>();
我将weekday
插入数据库...
听到WeekdayType
是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 ..
@Entity
@Table(name="EC_TIMETABLE")
public class TimetableVO
{
-------
-----
@Column(name="REPEAT_DAYS")
private List<WeekdayType> repeatDays;
//Setter and Getter...
}
我将值插入到数据库中,但它给出错误:
org.hibernate.MappingException: Could not determine type for: java.util.List, at table: EC_TIMETABLE, for columns: [org.hibernate.mapping.Column(REPEAT_DAYS)]
答案 0 :(得分:2)
您需要使用@Enumerated
注释注释枚举列表。
@Column(name="REPEAT_DAYS")
@Enumerated(EnumType.STRING)
private List<WeekdayType> repeatDays;
您可以使用@Enumerated注释的EnumType枚举属性指定枚举应如何在数据库中保留。 EnumType.ORDINAL指定枚举将作为整数值持久化。在这里,myEnum设置为VALUE1将保持为0,VALUE2保持为1,等等。
另一种方法是使用EnumType.STRING指定枚举将使用字段设置为的枚举值的名称进行持久化。因此,应用于上一个示例,将myEnum字段设置为MyEnum.VALUE1将保持为VALUE1等。
<强>更新强>
您还需要使用枚举的所有有效值指定columnDefinition
属性。
@Column(name="REPEAT_DAYS", columnDefinition="enum(1,2,3)")