Я использую Redis для хранения аварийных сигналов моего приложения с сущностью, как показано ниже:
@RedisHash("alarm")
public class Alarm implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Indexed
private String name;
@Indexed
private String createdAt;
@Indexed
private String createdBy;
@Indexed
private String clearAt;
@Indexed
private String clearBy;
}
Конфигурация источника данных выглядит следующим образом:
@Configuration
@EnableRedisRepositories(basePackages = "com.app.demo.redis.repository")
public class RedisDataSourceConfiguration {
@Autowired
private RedisProperties redisProperties;
@Bean
public JedisConnectionFactory jedisConnectionFactory(){
RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration();
return new JedisConnectionFactory();
}
@Bean
public RedisTemplate<Object, Object> redisTemplate(){
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
template.setConnectionFactory(jedisConnectionFactory());
}
}
И это хранилище:
@Repository
public interface AlarmRedisRepository extends JpaRepository<Alarm, Long>, JpaSpecificationExecutor<Alarm>{
}
Я использовал Specification
для настройки поиска:
public class AlarmSpecification implements Specification<Alarm>{
private Alarm filter;
public AlarmSpecification(Alarm alarm){
this.alarm = alarm;
}
@Override
public Predicate toPredicate(Root<Alarm> root, CriteriaQuery<?> query, CriteriaBuilder builder){
// This is where I added the filter
Predicate predicate = builder.disjunction();
return predicate;
}
}
В моем @Service
:
@Autowired
private AlarmRedisRepository repo;
Pageable pageable = .....
Alarm alarm = .....
Specification<Alarm> specification = new AlarmSpecification(alarm);
Page<Alarm> page = repo.findAll(specification, pageable);
он возвращает ошибку в качестве заголовка. Любой, кто раньше работал с Redis и Specification, может мне помочь !!! Спасибо в продвинутом