代码之家  ›  专栏  ›  技术社区  ›  willcodejavaforfood

JPA、地图和插入顺序

  •  2
  • willcodejavaforfood  · 技术社区  · 14 年前

    所以我可以用LinkedHashMap或@OrderColumn来保持插入顺序吗?

    @Entity
    public class MooData
    {
        @OrderColumn
        @ElementCollection
        private List<BigDecimal> data;
    
        @ElementCollection
        private Map<String, String> properties;
    }
    
    2 回复  |  直到 13 年前
        1
  •  8
  •   Pascal Thivent    14 年前

    我在JPA2.0规范中找不到任何证据表明 @OrderColumn 注释应该适用于 Map . 引用规范:

    这个 OrderColumn 用于维护 持久秩序 . 这个 持久性提供者负责 为了维持秩序 数据库中的检索和检索。这个 用于更新订单 刷新数据库以反映 影响列表。这个 订单列 注释可以在 关系或元素 订单列 引用 订单列作为的一部分不可见 实体或可嵌入实体的状态

    如果你想保持秩序,使用 List (第页,共页) Embeddable 在你的情况下)。用一个 地图

        2
  •  -1
  •   Andreas Dolk    14 年前

    我的googlefu给我指了一些页面,上面写着 @OrderColumn 可用于所有集合-因此听起来它不局限于列表或集合。尽管我找到的所有页面都有 List

    这个 eclipse WIKI 在网上有一篇很好的文章 @订单列


    编辑

    解决方法是什么?您可以向bean中添加一个方法来获取maps条目集:

    public Set<Map.Entry<?,?>> getPropertiesEntries() {
       Set<Map.Entry<?,?>> result = new TreeSet(myComparator);
       result.addAll(map.entrySet());
       return result;
    }