SpringBoot findById方法在存储库中不工作



错误信息我正在尝试制作一个简单的SpringBoot应用程序,并在尝试运行它时得到此错误。不知道为什么。

@Service
public class UserService {
@Autowired
UserRepository userRepository;
public User getUserByEmail(String email) {
return userRepository.findByEmail(email);
}

public User createUser(User u) {
User user = userRepository.save(u);
return user;
}
public void deleteUserById(Long id) {
userRepository.deleteById(id);
}
public User findUserById(Long id) {
return userRepository.findById(id);
}
}

这里有一个到仓库的链接:https://github.com/deckard20202020/HelpingHand

我想我只需要在返回类型上加上<Optional。>

JpaRepository

JpaRepository已经实现了许多常用的签名。其中之一是<T> findById(Integer id);,它与包含Long作为id参数的签名冲突。

你不需要添加签名,你已经可以开箱即用了。

既然我看到你在怀疑应该使用什么抽象,下面是抽象层次的顺序:

<<ul>
  • 库/gh>
  • CrudRepository
  • PagingAndSortingRepository
  • JpaRepository
  • 您也可以创建自己的抽象
  • 您自己的抽象

    public interface SomeJpaRepository extends SomeRepositry, CrudRepositry<Some, Long> {
    // Extra functionality on top of the provided CRUD
    }
    public interface SomeRepository {
    // Implemented methods and helpers to be used by the service
    }
    

    旁注:您也不需要添加@Repository注释,因为Spring Data已经扫描了类路径中所有jarepository类型的接口或类。

    欢迎来到stackoverflow, @deckard2020!

    我认为你需要用@Transactional(readonly = true)装饰UserServicefindUserById功能。

    相关内容

    • 没有找到相关文章

    最新更新