Spring 数据 Hazelcast 存储库不工作
Spring Data Hazelcast Repository not working
我尝试将我的 Springboot(v1.4.2) 应用程序与 Hazelcast 集群连接以查找存储的数据。为此,我使用了一个 hazelcast-client 实例,并创建了一个 HazelcastRepository 来搜索我的数据。
问题是我的存储库找不到任何数据。当我用 findAll() 测试时,它总是 returns 一个空列表;当我用 findOne():
测试时,它总是空列表
下面是我的 Service/Repository/Domain/Configuration 代码:
@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();
}
}
这是我的 Repo 和域:
@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-client 配置:
@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 存储库,我找不到任何东西。
谁能告诉我怎么了?
一切都很好,我发现了问题。我只需要将我的地图名称与我的域内的@Keyspace 注释相关联 class (Element) --> @Keyspace("myMapName")
我尝试将我的 Springboot(v1.4.2) 应用程序与 Hazelcast 集群连接以查找存储的数据。为此,我使用了一个 hazelcast-client 实例,并创建了一个 HazelcastRepository 来搜索我的数据。
问题是我的存储库找不到任何数据。当我用 findAll() 测试时,它总是 returns 一个空列表;当我用 findOne():
测试时,它总是空列表下面是我的 Service/Repository/Domain/Configuration 代码:
@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();
}
}
这是我的 Repo 和域:
@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-client 配置:
@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 存储库,我找不到任何东西。 谁能告诉我怎么了?
一切都很好,我发现了问题。我只需要将我的地图名称与我的域内的@Keyspace 注释相关联 class (Element) --> @Keyspace("myMapName")