在ORMLite中保持Map <string,string>而不诉诸DataType.SERIALIZABLE?</string,string>

时间:2011-11-09 21:11:43

标签: java orm ormlite

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

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

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

在上面的例子中,@ ForeignCollectionField注释标记   订单字段是与之匹配的订单的集合   帐户。订单的字段类型必须是ForeignCollection   或Collection<T> - 不支持其他馆藏。该   @ForeignCollectionField注释支持以下字段:

基于以上所述我得到的印象是我想要的东西是不可能的,但我想我会在这里检查一下。我把它坚持在Hibernate中,但我宁愿使用像ORMLite那样更轻的东西!

2 个答案:

答案 0 :(得分:4)

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

但话说回来,JSON不是开箱即用的一部分,所以如果你还没有使用它,这可能会让你觉得不必要。

答案 1 :(得分:3)

是的,ORMLite无法坚持Map。遵循KISS原则,仅支持简单的Collection类。 SetMap对它们有更多的界面权重,可能永远不会得到支持。

我没有为你做任何超级好的工作。您显然可以使用ForeignCollection,然后在需要以这种方式访问​​集合时创建一个本地Map字段。也许addOrder()方法会将其添加到ForeignCollectionMap