2017-10-05 2 views
2

Igniteキャッシュで実行中のSQLクエリのコードに従っていますが、CacheConfiguration.setIndexedTypes APIの使用を完全に実現することができます。Ignite CacheにCacheConfiguration.setIndexedTypesを使用する方法

私は着火サイトで見つけられる唯一の助けに従っています。

ドキュメントhereCacheConfiguration.setIndexedTypes(MyKey.class、MyValue.class)を使用することを言います。

は、今私があるべきパラメータがsetIndexedType方法で渡しているPersonクラス

@QuerySqlField(index = true) 
private long id; 

@QuerySqlField 
private String firstName; 

に言うことができますか?あなたのケースでは

答えて

0

setIndexedTypesを参照してくださいcache.put(key, person)またはinsert into Person(_key, ...) ...
を呼び出すと、パラメータの偶数をとりながら、あなたがキーに使用するタイプです

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

になります。すべての奇数パラメータはキータイプに対応し、すべての奇数パラメータは値タイプに対応します。あなたのケースではおそらくidパラメータをキーとして使用する必要がありますので、この方法で呼び出す必要があります。

cacheConfig.setIndexedTypes(Long.class、Person.class); setIndexedTypes方法について

のJavadocは、この方法のかなり良い説明が含まれています:https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/configuration/CacheConfiguration.html#setIndexedTypes(java.lang.Class...)

UPD:

あなたはsetIndexedTypes方法を提供パラメータのペアごとにSQLでテーブルが登録されます。

SQLエンティティはキャッシュレコードにマップされ、QuerySqlField-sとして構成したものに加えて、_keyおよび_valの列を持ちます。したがって、各テーブルのキャッシュで使用されるキーと値のタイプを指定する必要があります。

ます。詳細については、このページを参照することができ

https://apacheignite.readme.io/docs/dml#basic-configuration

+0

だから場合には、私はクラスPerson @QuerySqlField(インデックス=真) プライベート長いIDに2つのインデックスを持って言うことができます。 @QuerySqlField(index = true) プライベートString orgId; My indexTypesは - である必要があります。cacheConfig.setIndexedTypes(Long.class、Person.class、String.class、Person.class); これは間違いありませんか? – frewper

+0

@frewper no、実際にキータイプはインデックスに依存しません。他のフィールドにインデックスを付ける場合でも、setIndexedTypes呼び出しは同じままです。私はそれについて私の答えにいくつかの情報を追加しました。 – Denis

関連する問題