可以在方法上使用@QuerySqlField吗?

时间:2017-04-27 17:26:55

标签: java ignite

假设我有一个如下所示的类,我想将这样的对象放入缓存并使用SQL查询它们。是否支持在下面的getTotal()方法上使用@QuerySqlField注释?当我用SQL查询我的缓存时,我总是为总字段获取null,当我检入h2数据库时它也是null,所以我不确定这个用例是否不受支持或者我是否做错了。 javadocs表示注释适用于字段和方法。有人可以帮忙吗?

public class Stats {
  @QuerySqlField private double cats;
  @QuerySqlField private double dogs;
  ...
  @QuerySqlField(name="total")
  public double getTotal() { return cats + dogs; }
}

1 个答案:

答案 0 :(得分:3)

默认情况下,Ignite使用二进制格式[1]来存储数据,而不对服务器端的对象进行反序列化,因此方法调用不可用。您可以通过切换到OptimizedMarshaller来使其工作,但这不是推荐的方法,因为它是传统的序列化格式。

请注意,在Ignite 2.0中,{@ 1}}将被弃用,OptimizedMarshaller注释将仅限于字段。

[1] https://apacheignite.readme.io/docs/binary-marshaller