【问题标题】:Is it possible to map a Map<String, Object> with Hibernate?是否可以使用 Hibernate 映射 Map<String, Object>?
【发布时间】:2011-08-10 07:48:02
【问题描述】:

一切都在问题之中。如何使用注释映射带有 Hibernate 的地图? 以及相关的数据库结构是什么?

【问题讨论】:

    标签: hibernate hibernate-mapping


    【解决方案1】:

    您可能正在寻找一个通用的键值数据库结构,其中值可以有多种类型。这通常可以通过某种抽象的Value 类来解决,该类具有关键属性和几个子类,每个子类都对应于每种所需的类型:

    现在你使用:

    Map<String, Value>
    

    当然,这种方法有很多缺点,正确选择继承策略就是其中之一(这取决于您要存储多少种不同的类型)。但至少它是完全类型安全的。

    我没有任何使用 NHibernate 的经验,但是使用 Hibernate(请参阅:How do you map a "Map" in hibernate using annotations?)您可以直接映射 Map

    【讨论】:

    • 这就是我的想法......在我的情况下,我想轻松添加新的子类(实际上不需要创建一个包含所有休眠注释的新子类)。实际上,为了模拟这一点,我在 json 中序列化哈希表并将其保存在我班级的一个大文本字段中......但这不是很干净;)谢谢你的回答
    • 当然,您甚至可以依赖 Hibernate 并简单地序列化 BLOB 中的对象......但建议的方法实际上允许您使用 SQL 查询值(至少是原语)。如果您需要如此灵活的模式,也许面向文档的数据库(如 MongoDB)会是更好的工具?
    • 这只是需要灵活的部分,因此仅使用 mongodb 可能有点矫枉过正......但没关系,我想我会使用你提出的架构。
    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 2011-12-14
    • 2012-04-04
    • 2011-08-31
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多