Я пытаюсь использовать классы шкал Scala как объект в кэшах Gridgain. Но я не могу заставить его работать. Он отлично работает, если я создаю точно тот же объект, что и java-класс.Индексация классов шкалы Scala в GridGain
Это мой TestCase:
class GridGainTest extends FunSuite {
val grid = GridGain.start("gridgain_mini.xml")
private val theCache = grid.cache[Long, TestData2]("theCache")
test("That the basics is working") {
val tx = theCache.txStart()
theCache.put(1, new TestData2(1, "Hello", 0))
theCache.put(2, new TestData2(2, "World", 1))
tx.commit()
val q = theCache.queries().createSqlQuery(classOf[TestData2], "parent = ?")
val qRes1 = q.execute(new java.lang.Long(1)).get()
assert(qRes1.size() == 1)
}
}
@BeanInfo
case class TestData(@BeanProperty @GridCacheQuerySqlField(index = true) id: Long,
@BeanProperty @GridCacheQuerySqlField(index = true) name: String,
@BeanProperty @GridCacheQuerySqlField(index = true) parent: Long)
public class TestData2 {
@GridCacheQuerySqlField(index = true)
public final long id;
@GridCacheQuerySqlField(index = true)
public final String name;
@GridCacheQuerySqlField(index = true)
public final long parent;
public TestData2(long id, String name, long parent) {
this.id = id;
this.name = name;
this.parent = parent;
}
}
С TestData2 тест проходит, но с Testdata он не на утверждают из-за размера = 0.
Я попытался несколько комбинаций свойств-типов (java.lang.Long и т. д.) и комбинации аннотаций в классе case, но ничего не работает. Я должен пропустить что-то принципиальное здесь, но несколько часов испытаний с моей стороны, очевидно, не доходят до меня.
Любые подсказки?
И это сделало трюк. Спасибо! –