假设我有一个像下面这样的类,我想将这样的对象放入缓存并使用SQL查询它们。是否支持在下面的getTotal()方法上使用@QuerySqlField批注?当我使用SQL查询缓存时,total字段的总值始终为null,因此当我检入h2数据库时也为null,因此我不确定是否支持该用例或做错了什么。 javadocs说,对于字段和方法,注释是可以的。有人可以帮忙吗?

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

最佳答案

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

请注意,在Ignite 2.0中,不建议使用OptimizedMarshaller,并且@QuerySqlField注释将限于字段。

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

07-25 21:15