原因:org.springframework.dao.IncorrectResultSizeDataAccessException:错误的结果大小:Spring Data Redis

时间:2018-11-26 05:28:28

标签: spring redis spring-data-redis

我正在通过引用https://www.programcreek.com/java-api-examples/?code=Just-Fun/spring-data-examples/spring-data-examples-master/jpa/query-by-example/src/test/java/example/springdata/jpa/querybyexample/UserRepositoryIntegrationTests.java来开发代码。

User.java

val value = 283.8f
String.format("%.02f", value))

UserRepository.java

@Data
@RedisHash("User")
public class User {

    private @Id Long id;
    @Indexed
    private String firstname; 
    @Indexed
    private String lastname;
    private Integer age;

    public User() {}

    public User(String firstname, String lastname, Integer age) {
        super();
        this.firstname = firstname;
        this.lastname = lastname;
        this.age = age;
    }
}

RedisExampleApplication.java

public interface UserRepository extends QueryByExampleExecutor<User>, CrudRepository<User, String> {

}

错误:

@SpringBootApplication
public class RedisExampleApplication implements CommandLineRunner{
    @Autowired
    private UserRepository userRepository;

    public static void main(String[] args) {
        SpringApplication.run(RedisExampleApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        userRepository.deleteAll();

        User skyler = userRepository.save(new User("Skyler", "Doe", 45));
        User walter = userRepository.save(new User("Walter", "White", 50));
        User flynn = userRepository.save(new User("Walter Jr. (Flynn)", "Kerr", 17));
        userRepository.saveAll(Arrays.asList(skyler, walter, flynn));

        long count = userRepository.count(Example.of(new User(null, "White", null)));
        System.out.println("COUNT ? "+count);


        Example<User> example = Example.of(flynn, matching().//
                withIgnorePaths("firstname", "lastname"));

        Optional<User> findOne = userRepository.findOne(example);
        System.out.println("USER ? "+findOne);
    }
}

1 个答案:

答案 0 :(得分:0)

问题可能是由于:

Optional<User> findOne = userRepository.findOne(example);

您在这里使用的是findOne方法,但是看来您得到的结果不止一个。因此,请使用find方法或修改搜索条件以确保您获得单个结果。