我正在使用以下依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
我需要查询users
键空间中存在的myks
表
从控制器部分,我正在调用服务
userService.authenticateUser(username, password);
在服务方法中,我调用了存储库
logger.info("Here : " + username);
boolean userExists = userRepository.existsById(username);
logger.info("userExists : " + userExists);
if (userExists) {
User user = userRepository.findByusername(username).get();
return user;
}
return null;
以下是我的存储库
@Repository
public interface UserRepository extends CrudRepository<User, String> {
Optional<User> findByusername(final String username);
}
假设在表中我没有与用户kri_test
的条目,并且用户发送的用户名为kri_test
的输入,那么我将遇到异常java.util.NoSuchElementException: No value present
即使不打印服务类中存在的日志语句
答案 0 :(得分:1)
它与Cassandra配置等无关。您正在从userRepository.findByusername(username)
获得Optional.empty()。然后,您可以在不首先调用get()
的情况下调用isPresent()
方法。
您可以用这根衬板解决您的问题;
return userRepository.findByusername(username).orElse(null);
答案 1 :(得分:0)
这是两个控制器,所以当我们尝试调用任何控制器时,我们主要使用 URL 来调用任何类型的控制器。 1.您可能在URL或 2.您正在尝试调用不在服务类中的数据。
@RequestMapping("/topics")//URL
public List<Topic> getAllTopics() {
return topicService.getAllTopics();
}
@RequestMapping("/topics/{id}")
public Topic getTopic(@PathVariable String id){
return topicService.getTopic(id);
}