【问题标题】:Why List<valueObject> giving Error in Hibernate?为什么 List<valueObject> 在 Hibernate 中给出错误?
【发布时间】:2012-12-10 09:00:38
【问题描述】:

在我的 Java 应用程序中创建具有一个字段的值对象(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 是 Enum 类

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)]

数据库或语法问题中所需的任何列也是如此..... 提前谢谢..

【问题讨论】:

    标签: java hibernate collections


    【解决方案1】:

    不,如果您不想,您不需要在数据库中为该字段提供一列。

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

    @Transient
    private List<WeekdayType> repeatDays;
    

    【讨论】:

    • 感谢您的快速回复
    【解决方案2】:

    将集合标记为瞬态将指示 Hibernate 这不是持久项。我认为this 之类的内容更符合您的要求。

    【讨论】:

      【解决方案3】:

      JPA 的@Transient 注解用于表示一个字段不被持久化到数据库中,即它们的语义不同。

      现在解决办法是……

      @Transient
      private List<WeekdayType> repeatDays;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-21
        • 1970-01-01
        • 2018-03-12
        • 1970-01-01
        相关资源
        最近更新 更多