0

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

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

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

谢谢!

4

1 回答 1

1

不。

只要讲道理。你怎么把它放到数据库中?没有列,可以存储你扔给它的任何东西——那不会是1NF

是的。

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

结论

如果一个字段在一种情况下需要存储字符串,而public class Whatchamacallit在另一种情况下需要存储日期或实例,那么是时候重新考虑类层次结构了——您可能只需要超类的子类。

额外的

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

于 2012-10-31T14:30:25.013 回答