【问题标题】:Spring Data Hazelcast Repository not workingSpring Data Hazelcast 存储库不工作
【发布时间】:2017-09-18 12:39:04
【问题描述】:

我尝试将我的 Springboot(v1.4.2) 应用程序与 Hazelcast 集群连接以查找存储的数据。为此,我使用了一个 hazelcast-client 实例,并创建了一个 HazelcastRepository 来搜索我的数据。

问题是我的存储库没有找到任何数据。当我用 findAll() 测试时它总是返回一个空列表,当我用 findOne() 测试时它总是返回一个空列表:

以下是我的服务/存储库/域/配置代码:

@Service
public class MyService {

    private static final Logger log = LoggerFactory.getLogger(MyService .class);

    private final MyHCRepository repository;

    @Autowired
    public MyService (final MyHCRepository repository) {
        this.repository = repository;
    }

    public String get(final String name) {
        List<Element> elements= repository.findByName(name);
        return elements.toString();
    }
}

这是我的仓库和域名:

@Repository
public interface MyHCRepository extends HazelcastRepository<Element, Integer> {
    List<Element> findByName(String name);
}

@Data
@KeySpace
public class Element implements Serializable {

    private Integer id;
    private String name;
}

这是我的 hazelcast 客户端配置:

@Configuration
@EnableHazelcastRepositories
public class HazelcastConfiguration {

    @Bean
    @Qualifier("client")
    public HazelcastInstance hazelcastClientInstance() {
        final ClientConfig clientConfig = new ClientConfig();
        final ClientNetworkConfig networkConfig = new ClientNetworkConfig();
        networkConfig.setAddresses(singletonList("127.0.0.1"));
        clientConfig.setNetworkConfig(networkConfig);
        return HazelcastClient.newHazelcastClient(clientConfig);
    }

    @Bean
    public KeyValueTemplate keyValueTemplate() {
        return new KeyValueTemplate(new HazelcastKeyValueAdapter(hazelcastClientInstance()));
    }
}

在我的 pom 中,我使用了这些依赖项:

<dependencies>
        <dependency>
            <groupId>com.hazelcast</groupId>
            <artifactId>hazelcast-client</artifactId>
            <version>3.6.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.hazelcast</groupId>
            <artifactId>spring-data-hazelcast</artifactId>
            <version>1.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-data-keyvalue</artifactId>
                    <groupId>org.springframework.data</groupId>
                </exclusion>
                <exclusion>
                    <groupId>com.hazelcast</groupId>
                    <artifactId>hazelcast</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <artifactId>spring-data-keyvalue</artifactId>
            <groupId>org.springframework.data</groupId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

我没有错误,也没有例外。好像我的 Hazelcast 集群中没有数据,但我知道有。如果我像这样从 Hazelcast-Cluster 连接并加载地图,则使用我的客户端:

client.getMap("mapsName");

然后我得到了我的数据,但如果我尝试使用 Hazelcast 存储库,我什么也找不到。 谁能告诉我怎么了?

【问题讨论】:

    标签: spring spring-boot spring-data hazelcast spring-data-keyvalue


    【解决方案1】:

    一切都好,我发现了问题。我只需要将我的地图名称与我的域类(元素)中的 @Keyspace 注释相关联 --> @Keyspace("myMapName")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      相关资源
      最近更新 更多