2010-10-28 49 views
1

我有一個有效性的對象,其中包含兩個日期,開始和結束。我有一個我爲此編寫的UserType,以便可以簡化有幾個實體的hibernate映射。這工作正常。如何編寫一個Hibernate「UserType」,其中的類型中有一個集合?

現在我想添加一組有效期的工作日。我能找出的唯一解決方案是更改每個實體以將有效性作爲組件處理,並將工作日映射爲a。

有沒有什麼方法可以用* UserType來做到這一點?

class Validity { 
    Date start; 
    Date end; 
    Set<DayOfWeek> daysOfWeek; 
} 

enum DayOfWeek {SUNDAY, MONDAY, TUESDAY ... } 

回答

0

由於集合來自一個enum,可以映射(編碼)daysOfWeek組的每個可能值到數據庫值,寫一個用戶類型實例來管理翻譯的內容是什麼?例如,像{ SUNDAY, TUESDAY, THURSDAY }映射到1010100

編輯:這將使查詢數據庫的應用程序比你的痛苦。

+0

這是我們已經決定在這種情況下做的,但我們還有其他的情況下,它不是一個枚舉,但用戶輸入的數據,因而不可能的。所以我仍然想找到一個通用的解決方案。 – 2010-10-30 10:30:31

+0

@David Corbin,我不認爲'UserType'是用你想到的用例創建的。它們應該映射到與父實體相同的表中的一列或多列。通過使用1:N映射,恕我直言,您爭取的一般解決方案可以更好地實現。 – 2010-11-02 08:54:44