我正在使用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;
答案 0 :(得分:0)
Hibernate为您执行此操作的最简单方法是将“网格”分解为具有字符串列表的对象,然后您的ParentEntity
将具有这些对象的列表。然后,Hibernate可以轻松地将其映射出来,如果你愿意,可以急切地获取结构,这样你就可以将它全部存储在内存中并且不会产生额外的选择。