2017-10-05 215 views
2

我正在關注Ignite高速緩存中正在運行的SQL查詢的代碼,但能夠完全實現CacheConfiguration.setIndexedTypes API的使用。如何將CacheConfiguration.setIndexedTypes用於Ignite高速緩存

我追隨着我在點火網站找到的唯一幫助。

文檔here說,使用 CacheConfiguration.setIndexedTypes(MyKey.class,MyValue.class)。

現在,讓我們在Person類

@QuerySqlField(index = true) 
private long id; 

@QuerySqlField 
private String firstName; 

它們是我的參數應該是傳入setIndexedType方法說呢?

回答

0

你的情況,這將是

cacheConfig.setIndexedTypes(KeyType.class, Person.class) 

其中的KeyType是你同時呼籲cache.put(key, person)insert into Person(_key, ...) ...
請參考this documentation section

0

setIndexedTypes需要偶數個參數用於鍵的類型。每個奇數參數對應一個鍵類型,並且每個偶數對應一個值類型。在你的情況下,你應該使用id參數作爲關鍵字,所以你應該這樣稱呼它:

cacheConfig.setIndexedTypes(Long.class,Person.class);

的Javadoc setIndexedTypes方法中包含這種方法的一個很好的解釋:https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/configuration/CacheConfiguration.html#setIndexedTypes(java.lang.Class...)

UPD:

有將登記表中的SQL每一對您提供給setIndexedTypes方法參數。

您的SQL實體將映射到緩存記錄,除了您配置爲QuerySqlField-s之外,它們還將有_key_val列。因此,您應該爲每個表指定將在緩存中使用的鍵和值的類型。

您可以參考此頁面瞭解更多信息:https://apacheignite.readme.io/docs/dml#basic-configuration

+0

所以在情況下,可以說我對類人 @QuerySqlField(指數=真) 私人長期ID兩個指標; @QuerySqlField(index = true) private String orgId; 我的索引類型應該是 - cacheConfig.setIndexedTypes(Long.class,Person.class,String.class,Person.class); 這是正確的嗎? – frewper

+0

@frewper不,實際上鍵類型不依賴索引。即使您將其他字段編入索引,setIndexedTypes調用也將保持不變。我添加了一些關於它的信息給我的答案。 – Denis