为了账号安全,请及时绑定邮箱和手机立即绑定

findOne方法是findOne(Example<S> example) 返回Optional<S>,为什么我的findOne()方法会报错

findOne方法是findOne(Example example) 返回Optional,为什么我的版本用不起findOne()方法

正在回答

11 回答

引入头文件
import java.util.Optional;
import org.springframework.data.domain.Example;

实现代码
//查询一个女生
@GetMapping(value = "/girls/{id}")
public Optional<Girl> girlFindOne(@PathVariable("id") Integer id)
{
    Girl girl = new Girl();
    girl.setId(id);
    Example<Girl> example = Example.of(girl);

    return girlRepository.findOne(example);
}


1 回复 有任何疑惑可以回复我~
Optional<Employee> employee1 = employJpaRepository.findById(99);
System.out.println("第二个:"+employee1);

这样子会比较简单

0 回复 有任何疑惑可以回复我~

自从spring boot 2.0以后,由于用上了Java 8 的Option,废除了findone(Id)。

1 回复 有任何疑惑可以回复我~

spring boot 新版本的问题,现在findOne返回的是 Optional 对象。

如果传id可直接调用findById方法,若传对象则调用findOne方法。

@Override
public Optional<MyAction> findMyActionById(Integer myActionId) {
    return myActionRepository.findById(myActionId);
}


1 回复 有任何疑惑可以回复我~

要导入正确的包

import org.springframework.data.domain.Example;

Example

0 回复 有任何疑惑可以回复我~

import org.springframework.data.domain.Example;

@GetMapping(value = "/girls/{id}")
public Optional<Girl> girlFindOne(@PathVariable("id") Integer id)
{
   Girl girl = new Girl();
   girl.setId(id);
   Example<Girl> example = Example.of(girl);
   return girlRepository.findOne(example);
}

0 回复 有任何疑惑可以回复我~

谢谢你的帖子

0 回复 有任何疑惑可以回复我~

这个Example是spring的吗,我复制你的代码报这个无法解析

0 回复 有任何疑惑可以回复我~
#1

qq_不歌_0

最好还是自己敲一遍
2018-05-12 回复 有任何疑惑可以回复我~

转载@未来_0004  的回答

自问自答,找到问题所在了,是由于jdk8的原因,有可能和spring boot的版本也关系,

两种方式可选 注册,返回类是Optional<Girl>, Optional是jdk8自带的

@GetMapping(value = "/girls/{id}")
public Optional<Girl> girlFindOne(@PathVariable("id") Integer id) {

   //直接用findById查找
   //return  girlRepository.findById(id);

   //构通Example查找

   Girl girl = new Girl();
   girl.setId(id);
   Example<Girl> example = Example.of(girl);
   return girlRepository.findOne(example);
}


https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#query-by-example.usage

更新迭代太快了,小白学起来吃力,好无奈


7 回复 有任何疑惑可以回复我~
#1

Aouty

提示没有Optional类型怎么办?
2018-03-08 回复 有任何疑惑可以回复我~
#2

Aouty

按照你的方式问题已解决,谢谢!
2018-03-08 回复 有任何疑惑可以回复我~
#3

Irma_C

可以了 使用你的这两个方法都无问题了,太谢谢了
2018-03-09 回复 有任何疑惑可以回复我~
#4

qq_楚门_7 回复 Aouty

Optional是jdk1.8新增的,可能是你的jdk版本过低
2018-08-21 回复 有任何疑惑可以回复我~
查看1条回复

我也是这个问题,同求

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
2小时学会Spring Boot
  • 参与学习       151600    人
  • 解答问题       1079    个

Spring Boot入门视频教程,你将学会使用Spring Boot快速构建应用程序

进入课程

findOne方法是findOne(Example<S> example) 返回Optional<S>,为什么我的findOne()方法会报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信