【问题标题】:JPA Map<String,String> mapping with xmlJPA Map<String,String> 与 xml 的映射
【发布时间】:2011-10-22 12:17:43
【问题描述】:

我正在尝试为 Map&lt;String,String&gt; 字段定义 xml 映射

实体类无法修改,所以我使用的是 JPA 映射的 XML 变体,但无法找出正确的语法。

有人可以解释如何为这种情况编写 JPA xml - 或明确声明这对于 xml 是不可能的,但对于 Storing a Map<String,String> using JPA 中提到的注释是可能的...

我什至会很高兴知道 这是不可能的 - 理想情况下,当它参考说明它的规范部分时。

【问题讨论】:

    标签: java hibernate jpa orm persistence


    【解决方案1】:

    这些原始关系已添加到 JPA2 中,因此您必须使用 JPA2 实现。我使用 Eclipselink。关键字是“元素集合”。似乎这已经在这里讨论过: Storing a Map<String,String> using JPA

    【讨论】:

    【解决方案2】:

    经过更多时间和搜索不同的东西,我碰巧在这里找到了答案: http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/new_collection_mappings#XML_2

    解决办法是:

    <element-collection name="quotes">
      <column name="QUOTE"/>
      <map-key-column name="Q_DATE"/>
      <collection-table name="EBC_QUOTES">
        <join-column name="EBC_ID"/>
      </collection-table>
    </element-collection>
    

    【讨论】:

      【解决方案3】:

      您尚未指定您正在使用哪个 JPA 实现,但我认为这应该适用于 OpenJPA 和 Hibernate...请参见此处:

      http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Example_of_a_map_key_column_relationship_XML

      您将遇到的困难是您要映射到原始类型而不是实体类型。我不会说这是不可能的,但我会根据经验说这很痛苦。

      【讨论】:

      • 谢谢...理想情况下,我希望解决方案独立于实现 - 否则我可以使用轻松支持此功能的 Hibernate 映射...不幸的是,您的链接显示了一个带有实体类型值的示例。不过,我还是想看看有多痛苦;也许这让我决定这个方向是错误的,并且创建中间实体包装器更容易。根据this answer,可能有注释;所以我假设 xml 语法也允许它。
      猜你喜欢
      • 2010-10-25
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2019-11-27
      • 1970-01-01
      • 2011-08-31
      • 2011-10-20
      相关资源
      最近更新 更多