0

我正在嘗試使用基於地圖的鍵名稱的條件對Map進行部分索引。Objectify - 基於密鑰名稱的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; 
} 

你可以從結果看,無論AB鍵索引,但我想指數只有A鍵。 enter image description here

我已經知道,物化提供的partial-indexing的概念,但似乎我只能對整個地圖上使用這個(索引整個地圖或不索引地圖的話)。

有沒有辦法根據自定義條件只索引地圖的一些鍵? (如密鑰的名稱)

回答

0

有趣。不幸的是,目前還沒有一種簡單的方法來做到這一點。請在Github提出增強請求。

如果這對於立即解決問題至關重要(即,您在數據存儲區中燒大$),則可以複製EmbeddedMapTranslatorFactory,更改save()代碼並使用@Translate在該字段上啓用此新版本註解。或者,如果您覺得冒險且想要提交PR,重要的改變是將Path傳遞給If<?,?>方法。

相關問題