为什么List <valueobject>在Hibernate中给出错误?</valueobject>

时间:2012-12-10 09:00:38

标签: java hibernate collections

在我的Java应用程序中创建Value Object(Java Bean),其中有一个字段

@Entity
@Table(name="EC_TIMETABLE")
    public class TimetableVO
{
----//@id and some other column and variables
----

private List<WeekdayType> repeatDays;//Their is No column in Database
------
------//setter and getter method
}

听到WeekdayType是枚举类

public static 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;
    }

我正在使用TimetableVO getRepeatedDays()另一个类。

当我启动服务器时出现错误

org.hibernate.MappingException: Could not determine type for: java.util.List, at table: EC_TIMETABLE, for columns: [org.hibernate.mapping.Column(repeatDays)]

他们在数据库或语法中需要的任何列问题..... 提前谢谢..

3 个答案:

答案 0 :(得分:1)

不,如果您不想,您不需要在此字段的数据库中有一列。

如果您不想让它持久化,可以通过@Transient注释将其标记为瞬态。

@Transient
private List<WeekdayType> repeatDays;

答案 1 :(得分:0)

将集合标记为瞬态将指示Hibernate这不是持久项。我觉得像this这样的东西更符合你的要求。

答案 2 :(得分:0)

JPA的@Transient注释用于指示字段不会在数据库中保留,即它们的语义不同。

现在解决方案是......

@Transient
private List<WeekdayType> repeatDays;