为整数缓存键点亮@AffinityKeyMapped

问题描述 投票:0回答:1

阅读https://apacheignite.readme.io/docs/affinity-collocation和ignite-examples中的文档,使用@AffinityKeyMapped的示例假定键是一个对象:PersonKey是一个具有personId和companyId的类,而companyId具有注释。

在我的用例中,我的键是一个简单的整数。我正在使用从WebConsole生成的域模型。我有2个类:Item和ItemInstance,ItemInstance有一个Item的外键引用。我的模型定义如下:

public class ItemInstance implements Serializable {
    private static final long serialVersionUID = 0L;

    @QuerySqlField(index = true)
    @AffinityKeyMapped
    private int itemId;

    private String serialNumber;
...
}

public class Item implements Serializable {
    private String name;
...
}

在节点启动和缓存加载期间没有错误,但是在执行查询时我得到的结果不完整 - 它只检索并置的数据。我知道这一点,因为当我在Web控制台中运行相同的查询并勾选“允许非并置连接”时,我得到了完整的结果。

请注意,我没有像在另一个例子中那样使用AffinityKey,因为我正在阅读第三方数据库,而不是做任何put

你能告诉我以下内容吗:

  1. 点燃支持@AffinityKeyMapped在整数键上类似于我上面的用法;
  2. 我们是否需要在spring XML配置中定义@AffinityKeyMapped?我认为这可能是问题,但我无法在Web控制台中找到它,也无法在线找到它。

谢谢!

java spring ignite
1个回答
0
投票

亲和关键值必须是关键对象的一部分。因此,如果使用co-location,则使用简单整数作为缓存键是不够的,因为您的密钥至少应包含唯一的对象ID和关联键。因此,您应该使用这两个字段创建一个对象,并使用注释标记后者。

如果您不想使用注释,或者没有类,则可以通过CacheKeyConfiguration [1]提供关联键字段名称。但请注意,这仍然需要将复合对象用作键。

[1] https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/cache/CacheKeyConfiguration.html

© www.soinside.com 2019 - 2024. All rights reserved.