2012-05-15 79 views
0

在項目中,我正在使用JPA和Hibernate實現。所有的實體都是基於註釋的,並在persistence.xml中列出。JPA Hibernate Typedef

所有實體都打包成jar。

我需要爲幾個屬性(在所有實體中)定義一個typedef,這是一個枚舉類型的字符串。在DB中,列是varchar。我怎樣才能做到這一點?

我可以通過添加hbm.xml和hibernate-cfg.xml來實現嗎?

在此先感謝。

回答

3

直接從the documentation

@ org.hibernate.annotations.TypeDef和 @ org.hibernate.annotations.TypeDefs允許你聲明類型 定義。這些註釋可以放在課程或包 級別。請注意,這些定義對於會話工廠 (即使在類級別定義時)是全局的。如果該類型在單個實體上使用,則可以將該定義放置在實體本身上。 否則,建議將定義放在包 的級別。

+0

我有限制..我不能編輯類,並將它們重新打包成罐子..這就是爲什麼我首先提到它們被包裝.. – user1300877

+0

沒有人說哪個包或哪個類。這個文檔片斷指出,無論它們連接到哪個包或類,typedef都是全局的。 –

0

如果你不能改變類,但可以改變Hibernate的配置,我想你可以改變hibernate.mapping.precedence是「HBM,類」,然後添加在所有的信息HBM文件相關課程的註釋。有hbm語法來指定UserType或EnumType。如果使用它,你還必須定義你的UserType類。

你可能想在測試項目上試用這個,然後再說我的話,我假設它會工作,但我不知道肯定。

將註釋中的所有持久性信息複製到HBM可能會很痛苦,並會重複信息。如果可能,請嘗試找到一種將註釋添加到類本身的方法。