对行/列值使用JPA / Hibernate Map

时间:2012-01-23 22:53:28

标签: hibernate jpa

我正在使用Hibernate 3.6,但如果可能的话,我更愿意坚持使用JPA注释。

我有一个父实体,它有一个id,可能还有其他简单的属性(名称,描述等),但是会有一个二维的子集合(在简单的情况下,字符串)。

理想情况下,我希望ParentEntity看起来像这样:

class ParentEntity {
     @Id
     private Long id;
....
     @????
     // first Long should be column_index, second Long should be row_index
     private Map<Long,Map<Long,String>> gridOfStrings;
}

在我的数据库中,我的gridOfString表示如下:

GridItems
------------
grid_id (int,FK to grid)
column_index (int)
row_index (int)
value (varchar)

我有一定的灵活性来更改架构或实体的工作方式。

让Hibernate为我做神奇的最明智的方法是什么?我想避免编写实体列表的映射/转换逻辑到字符串行的列。

替代方法

我可以假设我只有2或3列,并将它们分开制作。我不知道如何让hibernate过滤每个连接。

实体可能如下所示:

@???
//rows where column_index=1
private Map<Long,String> column1;
...
private Map<Long,String> column2;
...
private Map<Long,String> column3;

1 个答案:

答案 0 :(得分:0)

Hibernate为您执行此操作的最简单方法是将“网格”分解为具有字​​符串列表的对象,然后您的ParentEntity将具有这些对象的列表。然后,Hibernate可以轻松地将其映射出来,如果你愿意,可以急切地获取结构,这样你就可以将它全部存储在内存中并且不会产生额外的选择。

相关问题