2011-03-10 103 views
4

Prereading:休眠(JPA)映射一个HashMap

How to persist a HashMap with hibernate

我的问题围绕aroung以下的结构,我想与JPA映射:

Map<User, List<POJO>> 

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

我如何能实现在链接的问题的建议吗?我怎么能只编序List部分与@Lob(当我只是注释字段,我得到一个类型转换错误,因为HashMap中不能转换成团块,这是我的问题的根源 - 我不能只标注值的一部分)?

我不知道我是否需要作出这样的实现Serializable一个包装清单,或者是不够的,只是使用ArrayList,这本身就是一个序列化包装类型。 无论如何,我并没有设法坚持这个Map实例...

顺便说一句,我打开关于这个所有方面的建议:我可以将List作为类成员对于每个用户,尽管我不觉得它属于那里,因为它不是用户数据(如账户数据;姓名,地址等)。它类似于购买,所以我将它们放置在一个类似实用程序的类(User类的外部)中,负责这些购买,以便拥有更多模块化模型。我想听听有关这听起来是否合理的建议。

任何有用的建议,将与虚饼干(和upvotes,很明显)予以奖励。
他们在非虚构的意义上是免费的。

干杯。

+0

“顺便说一句,我很乐于接受意见关于去这一切是不同的:我只是坚持的列表作为类成员的每个用户,虽然我不觉得它是属于有因为它不是用户数据(如账户数据;姓名,地址等)。“ - 请您提供您拥有的实际案例吗?否则,很难提出解决方案:-) – jpkrohling 2011-03-11 07:39:11

+0

@Mat,我恰恰相反,我无法忍受xml映射文件。在没有回复的情况下,我自己对此进行了处理,情况发生了一些变化,如果您有兴趣,我会结束这个问题并提出一个新问题(大约10分钟)。 – davin 2011-03-11 19:00:26

回答

2

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

+0

我最初用POJO作为'@ Embedded'解决了这个问题,而不是一个实体,尽管这个想法是一样的。 – davin 2011-03-14 17:15:24