我想知道是否可以定义具有未知(对象)元素类型的地图 我有一个定义了以下地图的对象:
Map<String, Object> attributes = new HashMap<String, Object>();
有时属性可以是String
,有时可以是java.util.Date
在Hibernate中有没有优雅的方法来处理这样的数据对象?
顺便说一下,我正在使用HBM XML
谢谢!
答案 0 :(得分:1)
否强>
只是合理。你会怎么把它放到数据库中?没有列可以存储你扔的任何内容 - 这不是1NF
是强>
好吧,如果你将它序列化为一个String,并将它存储在一个BLOB中,那么你可以做任何事情。但这不是一个优雅的解决方案,可能会带来比以前更多的问题。像你自己(或一个合适的库)必须实现转换为 - 来自String表示,但为了避免这种问题正是你使用Hibernate的原因,不是吗?
<强>结论强>
如果一个字段需要在一个case中存储一个String,而在另一个case中需要一个Date或一个public class Whatchamacallit
实例,那么就该重新考虑一个类层次结构了 - 你可能只需要一个超类的子类。 / p>
<强>附加强>
这种'属性'类型的DB结构必须谨慎使用,并且要格外小心!随着结构变得越来越大,这会导致非常低的吞吐量......