我有一个相对简单的类,主要由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那样更轻的东西!
答案 0 :(得分:4)
一个非常简单的解决方案是让getter和setter在幕后使用JSONObject,并将该对象作为String放在数据库中。
但话说回来,JSON不是开箱即用的一部分,所以如果你还没有使用它,这可能会让你觉得不必要。
答案 1 :(得分:3)
是的,ORMLite无法坚持Map
。遵循KISS原则,仅支持简单的Collection
类。 Set
和Map
对它们有更多的界面权重,可能永远不会得到支持。
我没有为你做任何超级好的工作。您显然可以使用ForeignCollection
,然后在需要以这种方式访问集合时创建一个本地Map
字段。也许addOrder()
方法会将其添加到ForeignCollection
和Map
。