具有未知元素类型的Hibernate Map

时间:2012-10-31 14:23:31

标签: java hibernate map hbmxml

我想知道是否可以定义具有未知(对象)元素类型的地图 我有一个定义了以下地图的对象:

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

有时属性可以是String,有时可以是java.util.Date 在Hibernate中有没有优雅的方法来处理这样的数据对象? 顺便说一下,我正在使用HBM XML

谢谢!

1 个答案:

答案 0 :(得分:1)

只是合理。你会怎么把它放到数据库中?没有列可以存储你扔的任何内容 - 这不是1NF

好吧,如果你将它序列化为一个String,并将它存储在一个BLOB中,那么你可以做任何事情。但这不是一个优雅的解决方案,可能会带来比以前更多的问题。像你自己(或一个合适的库)必须实现转换为 - 来自String表示,但为了避免这种问题正是你使用Hibernate的原因,不是吗?

<强>结论

如果一个字段需要在一个case中存储一个String,而在另一个case中需要一个Date或一个public class Whatchamacallit实例,那么就该重新考虑一个类层次结构了 - 你可能只需要一个超类的子类。 / p>

<强>附加

这种'属性'类型的DB结构必须谨慎使用,并且要格外小心!随着结构变得越来越大,这会导致非常低的吞吐量......