【问题标题】:Persisting a Map<String,String> in ORMLite without resorting to DataType.SERIALIZABLE?在 ORMLite 中保留 Map<String,String> 而不诉诸 DataType.SERIALIZABLE?
【发布时间】:2011-11-09 21:11:42
【问题描述】:

我有一个相对简单的类,主要由Map&lt;String,String&gt; 支持。我想保留这个类并能够在地图中的键中搜索。基于此Stack Overflow question,我感觉地图只能作为序列化的 blob 持久化。

我还在ORMLite website 上看到以下内容:

public class Account {
    …
    @ForeignCollectionField(eager = false)
    ForeignCollection<Order> orders;
    …
}

在上面的例子中,@ForeignCollectionField 注释标记 订单字段是匹配的订单的集合 帐户。订单的字段类型必须是 ForeignCollection 或Collection&lt;T&gt; - 不支持其他集合。这 @ForeignCollectionField 注解支持以下字段:

根据上述情况,我觉得我想要的东西是不可能的,但我想我会在这里检查一下。我让它在 Hibernate 中持续存在,但我宁愿使用像 ORMLite 这样更轻的东西!

【问题讨论】:

    标签: java orm ormlite


    【解决方案1】:

    一个非常简单的解决方案是让 getter 和 setter 在后台使用 JSONObject,并将该对象作为字符串放入数据库中。

    但话说回来,JSON 不是 java-out-of-the-box 的一部分,所以如果你不使用它可能会觉得没有必要。

    【讨论】:

      【解决方案2】:

      是的,ORMLite 中没有办法持久化 Map。遵循 KISS 原则,仅支持简单的 Collection 类。 SetMap 对它们有更多的接口权重,可能永远不会被支持。

      我没有任何超棒的解决方法适合你。您显然可以使用ForeignCollection,然后在需要以这种方式访问​​集合时创建一个本地Map 字段。也许是一个addOrder() 方法,可以将它添加到ForeignCollectionMap

      【讨论】:

      • Gray,感谢您的建议,感谢您在 ORMLite 上所做的出色工作。
      • 谢谢@Jason。抱歉,我无法提供更多帮助。
      猜你喜欢
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      相关资源
      最近更新 更多