我正在尝试使用Spring boot构建简单的博客应用程序。然而,现在我遇到了一个问题,当我尝试将findOne用于我的service.java时,findOne(Long)方法未定义
我试图在存储库中创建指示findOne和save的对象。但是没有帮助
PersonRepository.java
package PersonRepository.javaio.javabrains.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import io.javabrains.Entity.Person;
@Repository
public interface PersonRepository extends CrudRepository<Person,Long>{
public Person findByEmail(String email);
/*
* public Person findOne(Long id);
*
* public Iterable<Person> findAll();
*
* public Person save(Person person);
*/
PersonService.java
@Service
public class PersonService {
@Autowired
private PersonRepository personRepository;
public Object findAll(){
return personRepository.findAll();
}
public Person findById(Long id){
return personRepository.findOne(id);
}
我希望消除评论块可以解决问题。但是,当我尝试运行应用程序时,它显示错误
最好使用JpaRepository
(它扩展了CRUD存储库)
您可以使用getOne()
或findById()
代替findOne()
(可选)
findById()
通过实体的id检索实体。
参数:id不能为空。
返回:具有给定id的实体,如果没有找到,则返回可选#空()
抛出:IllegalArgumentException-如果id为空。
getOne()
返回对具有给定标识符的实体的引用。根据JPA持久性提供程序的实现方式,这很可能总是返回一个实例并在第一次访问时抛出javax.持久性. EntityNotFoundException。其中一些会立即拒绝无效的标识符。
参数:id不能为空。
返回:对具有给定标识符的实体的引用。
请检查您使用的Spring版本。可能是您的findOne
已被findById
替换。
因此,您的存储库将成为:
public Person findByEmail(String email);
public Person findById(Long id);