【问题标题】:Using JPA/Hibernate Map for rows/columns values对行/列值使用 JPA/Hibernate Map
【发布时间】:2012-02-17 06:49:58
【问题描述】:

我正在使用 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 列,并将它们设为单独的地图。我不知道如何让休眠过滤每个加入。

实体可能如下所示:

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

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

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

    【讨论】:

    • 注释会是什么样子?即使没有表,“列”对象仍然是实体吗?
    • 您需要相应地调整表格布局,并且注释就像任何其他一对多关系一样。
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2017-12-25
    • 2011-03-14
    相关资源
    最近更新 更多