@QuerySqlField 可以用在方法上吗?
Can @QuerySqlField be used on methods?
假设我有一个像下面这样的class,我想将这样的对象放入缓存中并使用SQL查询它们。是否支持在下面的 getTotal() 方法等方法上使用 @QuerySqlField 注释?当我用 SQL 查询我的缓存时,总字段一直为空,当我检查 h2 数据库时它也是空的,所以我不确定这个用例是否不受支持或者我是否正在做错误的。 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
注释将仅限于字段。
假设我有一个像下面这样的class,我想将这样的对象放入缓存中并使用SQL查询它们。是否支持在下面的 getTotal() 方法等方法上使用 @QuerySqlField 注释?当我用 SQL 查询我的缓存时,总字段一直为空,当我检查 h2 数据库时它也是空的,所以我不确定这个用例是否不受支持或者我是否正在做错误的。 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
注释将仅限于字段。