Java SpringRedis数据存储库:一次通过ID获取多个哈希 问题:

Java SpringRedis数据存储库:一次通过ID获取多个哈希 问题:,java,spring,spring-boot,redis,spring-data-redis,Java,Spring,Spring Boot,Redis,Spring Data Redis,有没有办法使用SpringDataRedis的存储库一次检索多个哈希 我的代码不起作用: @RedisHash("Message") public class Message implements Serializable { @Id private String id; private String text; private LocalDateTime posted; private Integer upvotes; private Stri

有没有办法使用SpringDataRedis的存储库一次检索多个哈希

我的代码不起作用:

@RedisHash("Message")
public class Message implements Serializable {

    @Id
    private String id;
    private String text;
    private LocalDateTime posted;
    private Integer upvotes;
    private String authorId;
}

@Repository
public interface MessageRepository extends CrudRepository<Message, String> {
    // Got: IN (1): [IsIn, In]is not supported for redis query derivation
    Set<Message> getByIdIn(Set<String> ids); 
}

是否有任何方法可以将
映射器
传递到
ExecutePielined

是否应将其findByIdIn:Set findByIdIn(Set id)@德克戴恩,谢谢!我的错。
findByIdIn
是否在后台使用管道或脚本编写?@DirkDeyne看起来像是Spring Data Redis不支持
中的
。我得到:
IN(1):[IsIn,IN]不支持redis查询派生
是的,很不幸。。。。但是有一个警告:但是,请查阅特定于商店的文档,以了解支持的关键字的确切列表,因为此处列出的某些关键字可能在特定商店中不受支持…来自文档:findbylastname和firstname翻译为SINTER…:firstname:rand…:lastname:al'thor
public Set<Message> getMessagesById(Set<String> ids) {

        // I had to implement custom mapper since BeanUtilsHashMapper fails on LocalDateTime deserialization from String
        HashMapper<Message, String, String> mapper = new DTOConverter<>(Message.class);

        List<Object> messages = template.executePipelined((RedisCallback<Object>) connection -> {
            StringRedisConnection conn = (StringRedisConnection) connection;
            ids.stream()
                    .map(id -> "Message:" + id)
                    .forEach(conn::hGetAll);
            return null;
        });

        return messages.stream()
                .map(o -> (Map<String, String>) o)
                .map(o -> mapper.fromHash(o))
                .collect(toSet());
}