2012-12-10 25 views
0

在我的Java應用程序創建值對象(的Java Bean)有一個字段爲什麼列表<valueObject>在Hibernate中發生錯誤?

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

所以是他們在數據庫或語法問題..... 預先感謝任何所需的列..

回答

1

不,你如果你不想要,這個字段不需要在數據庫中有一列。

如果您不想使其持久化,您可以通過@Transient註釋將其標記爲瞬態。

@Transient 
private List<WeekdayType> repeatDays; 
+0

感謝您的快速回復 –

+0

烏爾歡迎。如果您的查詢得到解答,請接受。 – Rahul

0

將集合標記爲transient將指示Hibernate這不是持久項目。我認爲像this這樣的東西更符合你的要求。

+0

兄弟...但我不想在數據庫端的任何列.. –

0

JPA的@Transient註釋用於指示一個字段不會被保留在數據庫中,即它們的語義不同。

現在的解決方案是...

@Transient 
private List<WeekdayType> repeatDays; 
相關問題