3

我有一个相对简单的类,主要由Map<String,String>. 我想保留这个类并能够在地图中的键中进行搜索。基于这个Stack Overflow 问题,我觉得 Maps 只能作为序列化的 blob 保存。

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

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

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

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

4

2 回答 2

4

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

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

于 2012-11-12T09:07:10.987 回答
3

是的,在ORMLite中没有办法坚持一个Map. 遵循 KISS 原则,仅Collection支持简单类。 Set并且Map对他们有更多的界面权重,并且可能永远不会被支持。

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

于 2011-11-10T13:22:36.843 回答