2012-10-31 24 views
0

我想知道是否可以定義具有未知(對象)元素類型的映射。
我已經定義與下面的映射對象:具有未知元素類型的休眠映射

Map<String, Object> attributes = new HashMap<String, Object>(); 

有時一個屬性可以是String,有時也可以是一個java.util.Date
是否有處理在Hibernate中這樣的數據對象的任何優雅的方式?
順便說一句我正在使用HBM XML

謝謝!

回答

1

只要是合理的。你會如何把它放入數據庫?沒有專欄,那將存儲任何你扔在它 - 這不會是1NF

是的。

那麼,如果你將它序列化爲一個字符串,並將它存儲在一個BLOB中,那麼你可以做任何事情。但這不是一個優雅的解決方案,可能會造成比以前更多的問題。就像你自己(或者一個合適的庫)必須實現從String表示的轉換一樣,但爲了避免這種問題正是你使用Hibernate的原因,不是嗎?

結論

如果一個字段需要存儲一個字符串在一種情況下,和一個日期,或者在另一個​​實例,那麼現在是時候重新思考的類層次結構 - 你可能只需要一個子類一個超類。

額外

這「屬性」之類數據庫結構,必須謹慎使用,並與格外小心!隨着結構變得越來越大,這會導致吞吐量非常低...