【问题标题】:Hibernate(JPA) mapping a HashMapHibernate(JPA) 映射一个 HashMap
【发布时间】:2011-07-13 02:29:45
【问题描述】:

预读:

How to persist a HashMap with hibernate

我的问题围绕着我想用 JPA 映射的以下结构:

Map<User, List<POJO>>

我的 POJO 非常简单(没有复合类型等,只有一些原语)。

如何实施链接问题中的建议?我怎样才能只用@Lob 注释List 部分(当我只注释字段时,我得到一个类转换错误,因为HashMap 不能转换为Blob,这是我问题的根源——我可以' t 只注释地图的值部分)?

我不确定我是否需要创建一个实现可序列化的包装器类型来包装列表,或者仅使用本身是可序列化的 ArrayList 就足够了。 在任何情况下,我都无法持久保存这个 Map 实例......

顺便说一句,我愿意接受有关以不同方式处理这一切的建议:我可以将列表作为每个用户的类成员,尽管我不认为它属于那里,因为它不是用户数据(例如帐户数据;姓名、地址等)。它类似于购买,所以我将它们放在一个类似实用程序的类中(在 User 类之外)来处理这些购买,以便拥有更多的模块化模型。我想听听关于这听起来是否合理的建议。

任何有用的建议都会得到虚构的 cookie 奖励(当然还有点赞)。
它们在非常非想象的意义上没有脂肪。

干杯。

【问题讨论】:

  • "顺便说一句,我愿意接受有关以不同方式处理这一切的建议:我可以将列表作为每个用户的类成员,尽管我不觉得它属于那里因为它不是用户数据(如帐户数据;姓名、地址等)。" -- 请提供您的实际情况吗?否则,很难提出解决方案:-)
  • @Mat,我正好相反,我受不了xml映射文件。在没有回复的情况下,我自己解决了这个问题,情况发生了一些变化,如果您有兴趣,我将关闭这个问题并提出一个新问题(大约 10 分钟后)。

标签: java hibernate jpa map


【解决方案1】:

如果你有一个 Map,你可能有一个一对多的关系。将您的列表粘贴在用户中并使您的 POJO 成为一个实体,并且不要与@Lob 混为一谈,地图是一场等待发生的灾难(哈希值/等于问题)并且没有提供干净的数据库映射。

【讨论】:

  • 我最初用 POJO 作为@Embedded 而不是实体来解决它,尽管想法相同。
猜你喜欢
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2019-02-24
  • 1970-01-01
  • 2014-09-18
  • 2014-01-31
  • 2012-05-09
相关资源
最近更新 更多