Ayu*_*gam 6 redis java-8 spring-data-jpa spring-boot spring-repositories
我已经使用 Redis 配置了 Spring Data JPA,并使用RedisRepositorieswith 提供了诸如 等方法find()。findAll()所有这些方法似乎都工作得很好,但我无法编写我的自定义方法。
\n\n\nRedisEntity findByGenderAndGrade(String 性别, String 年级);
\n
RedisEntity 是一个简单的 POJO 实体类。如果您想了解更多信息,请在消息中告诉我。
\n\n以下是我的实体:
\n\n@Data\n@RedisHash("test1")\npublic class RedisEntity implements Serializable {\n\n @Id\n @GeneratedValue\n private String id;\n private String name;\n private String gender;\n private Integer grade;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n存储库:
\n\n@Repository\npublic interface TestRepository extends JpaRepository<RedisEntity, String> {\n\n List<RedisEntity> findAllByGender(String gender);\n List<RedisEntity> findAllByGrade(Integer grade);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n服务/控制器:
\n\n @Override\n public List<RedisEntity> getById(String id) {\n return testRepository.findById(id); //returns data perfectly.\n }\n @Override\n public List<RedisEntity> getAllByGender(String gender) {\n return testRepository.findAllByGender(gender); //returns [] \n }\n\n @Override\n public void saveEntity(RedisEntity redisEntity) {\n testRepository.save(redisEntity); // saves it in redis perfectly.\n }\nRun Code Online (Sandbox Code Playgroud)\n\n另外,\nfindByGender 和 findAllByGender 都给出 [],尽管我可以在我的 redis 数据库中查看数据并保存它。
\n\n根据 Fran\xc3\xa7oisDupire 的要求,
\n\n@Configuration\npublic class RedisConfig {\n\n @Autowired\n private DeploymentProperties deploymentProperties;\n\n private static Logger logger = LoggerFactory.getLogger(RedisConfig.class);\n\n @Bean\n JedisConnectionFactory jedisConnectionFactory() {\n RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("localhost", 6379);\n redisStandaloneConfiguration.setPassword(RedisPassword.of("root"));\n return new JedisConnectionFactory(redisStandaloneConfiguration);\n }\n\n @Bean\n public RedisTemplate<String, Object> redisTemplate() {\n RedisTemplate<String, Object> template = new RedisTemplate<>();\n template.setConnectionFactory(jedisConnectionFactory());\n return template;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n另外,我还提到了这篇文章:Baeldung 的 Spring data redis 文章
\n正如@JoshJ提到并经我自己和其他人验证,问题的解决方案是:
将 @Indexed 注释添加 到需要与所有查找一起使用的所有列/字段。
@Data
@RedisHash("EmployeeDetails")
public class RedisEntity {
@Id
private String employeeId;
private String firstName;
private String lastName;
@Indexed
private String gender;
@Indexed
private String grade;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7194 次 |
| 最近记录: |