如何使用 spring 数据在 Redis 哈希 table 中搜索具有特定值的实体?
How can I search a redis hash table for entities that have a particular values using spring data?
我有一个 RedisHash table,我在 spring 数据中建模如下:
@RedisHash("Entity")
@Data
@AllArgsConstructor
public class Entity implements Serializable {
private String id;
private String status;
private String name;
}
我有一个这样的 EntityRepository:
@Repository
public interface EntityRepository extends CrudRepository<Entity, String> {}
然后我有一个像这样的 EntityService:
@Service
public class EntityService {
@Autowired
private EntityRepository entityRepository;
public List<Entity> getAllByName(String name) {
// Code that gets all Entities stored in my redis table that have a certain name
}
public List<Entity> getAllByStatus(String status) {
// Code that gets all Entities stored in my redis table that have a certain status
}
如何在 redis 中搜索具有特定名称/特定状态的所有实体?
我遵循了文档 here 并且能够解决我的问题。我将 QueryByExampleExecutor 接口添加到我的存储库中,如下所示:
@Repository
public interface EntityRepository extends CrudRepository<Entity, String>, QueryByExampleExecutor<Entity> {}
使用示例 class 我是这样实现 getAllByName 的:
public List<Entity> getAllByName(String name) {
Entity entity = new Entity();
entity.setName(name);
Example<Entity> example = Example.of(entity);
entityRepository.findAll(example);
//...
}
我有一个 RedisHash table,我在 spring 数据中建模如下:
@RedisHash("Entity")
@Data
@AllArgsConstructor
public class Entity implements Serializable {
private String id;
private String status;
private String name;
}
我有一个这样的 EntityRepository:
@Repository
public interface EntityRepository extends CrudRepository<Entity, String> {}
然后我有一个像这样的 EntityService:
@Service
public class EntityService {
@Autowired
private EntityRepository entityRepository;
public List<Entity> getAllByName(String name) {
// Code that gets all Entities stored in my redis table that have a certain name
}
public List<Entity> getAllByStatus(String status) {
// Code that gets all Entities stored in my redis table that have a certain status
}
如何在 redis 中搜索具有特定名称/特定状态的所有实体?
我遵循了文档 here 并且能够解决我的问题。我将 QueryByExampleExecutor 接口添加到我的存储库中,如下所示:
@Repository
public interface EntityRepository extends CrudRepository<Entity, String>, QueryByExampleExecutor<Entity> {}
使用示例 class 我是这样实现 getAllByName 的:
public List<Entity> getAllByName(String name) {
Entity entity = new Entity();
entity.setName(name);
Example<Entity> example = Example.of(entity);
entityRepository.findAll(example);
//...
}