我正在尝试使用基于地图键名称的条件对Map进行部分索引。
我的目标是仅对A
键进行索引,因为我知道我只会查询它。
这是一个简单的演示代码:
Map<String, String> map = new HashMap<>();
map.put("A", "1");
map.put("B", "2");
MainClass mainClass = new MainClass();
mainClass.mapIndexed = map;
mainClass.mapUnindexed = map;
ObjectifyService.register(MainClass.class);
ObjectifyService.ofy().save().entities(mainClass);
和测试类
@Entity
public class MainClass {
@Id
Long id;
@Unindex
Map<String, String> mapUnindexed;
@Index
Map<String, String> mapIndexed;
}
从结果中可以看出,A
和B
键都被编入索引,但我只想索引A
键。
我已经知道Objectify提供了partial-indexing的概念,但似乎我只能在整个地图上使用它(索引整个地图或根本不对地图编制索引)。
有没有办法根据自定义条件仅为地图的某些键编制索引? (就像钥匙的名字一样)
答案 0 :(得分:0)
有趣。不幸的是,目前还没有一种简单的方法可以做到这一点;请在Github中提交增强请求。
如果这对于立即解决是非常关键的(即,您在数据存储区中刻录了大的$),则可以复制EmbeddedMapTranslatorFactory
,更改save()代码,并在该字段上启用此新版本使用@Translate
注释。
或者,如果您喜欢冒险并希望提交公关,那么重要的变化就是将Path
传递给If<?,?>
方法。