2017-06-29 7 views
0

Derzeit Gridgain Ich verwende/Ignite in meinem Projekt und mit einigen Problemen konfrontiert:Ignite Anmerkungen in Scala.Dynamic

Wie Sie vielleicht wissen, kann jede Gridgain serialisierbares Objekt in Cache halten, wie folgt aus:

val mycache = ignite.getOrCreateCache[String,MyClass]("MyName") 

Es bedeutet, dass wir unsere Klasse definieren und mit der dynamischen Eigenschaft erweitern können - das ist in Ordnung.

Wenn wir setzen Ignite-Annotation (@QuerySqlField) bei bestimmten Klasse-Feld - Ignite SQL-Abfragen mit Ihren Klassen wie diese verwenden: meine Frage

val sql = select * from MyClass 
mycache.query(new SqlFieldsQuers(sql)) 

Und jetzt: Wie ich Ignite einstellen -Annamen mit dynamischen Feldern in dynamischen Klassen in Scala? Ich habe meine dynamische Klassendefinition angebracht und hoffen auf etwas Hilfe ..

class DynamicType extends Dynamic with Serializable 
{ 
private val fields = mutable.Map.empty[String,Any].withDefault{key=>throw new NoSuchFieldError(key)} 
def selectDynamic(key: String) = fields(key) 
def updateDynamic(key: String)(value: Any) = fields(key) = value 
def applyDynamic(key: String)(args: Any*) = fields(key) 
} 

Antwort

1

Wie ich Ihre dynamischen Typ Implementierung verstehen nur eine Karte der Felder darstellen. In diesem Fall wird Ignite diese Karte als DynamicType Instanzfeld serialisieren. Es ist also wie jedes Objekt mit dem Feld Map Typ. Die Schlüssel-Wert-Paare der Map können nicht kommentiert werden und können nicht von Ignite indiziert werden.

+0

Im Allgemeinen ist das SQL-Schema in Ignite derzeit statisch. Also bezweifle ich, dass es überhaupt mit dynamischen Objekten arbeiten kann. –

+0

@ValentinKulichenko Es wird im Falle der programmatischen Erstellung von Cache/Schema. –