【问题标题】:Retrieving a HashMap检索 HashMap
【发布时间】:2013-03-08 16:09:32
【问题描述】:

包含 HashMap(使用 ElementCollection 注释)的实体将使用 Eclipse Link / JPA 进行持久化。

现在应该使用以下 JPQL 查询检索 HashMap:

SELECT t.myMap FROM myEntity t WHERE t.id = :id"

不幸的是,结果不再是 Map,而是一个字符串列表,这些字符串(仅)是 HashMap 的值。

如何将 HashMap 作为单个结果获取?

感谢任何帮助。

【问题讨论】:

    标签: jpa map hashmap eclipselink jpql


    【解决方案1】:

    你不能。您要求的不是实体中的集合,而是联接中的元素。您可能得到的最好结果是查询实体并使用它的 getMyMap() 来获取您所追求的集合

    【讨论】:

    • 不幸的是,该方法在实体中不存在 - myEntity 对象的用户应该无法直接访问地图。如果我要添加这样的方法,我必须将其公开。有没有其他方法可以获取收藏的内容?
    • 在 JPA 中,您必须从关系中获取每个项目并自己构建地图。 EclipseLink 确实允许设置 ContainerPolicy 类型以用于查询,但 EJBQueryImpl 仅定义 getResultList 或 getResultCollection,两者都不能返回 Map,因此您需要使用本机 EclipseLink api 执行查询。
    • 你能给我举个例子如何使用原生的EclipseLink api吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2019-01-09
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2014-10-20
    相关资源
    最近更新 更多