我在返回类型cp中出错:类型不匹配:无法从Optional转换为Compte
这是在使用Eclipse的春季启动中
''Java
@Service
@Transactional
public class BanqueMetierImpl implements IBanqueMetier{
@Autowired
private COmpteRepository compteRepository;
@Override
public Compte ConsulterCompte(String codeCpte){
Optional<Compte> cp=compteRepository.findById(codeCpte);
if(cp==null)throw new RuntimeException("Compte Introuvable");
return cp;
我正在尝试使用findOne,但无法正常工作,因此我使用findById的原因是返回类型cp时出现错误;
答案 0 :(得分:1)
此代码应该有效。
return cp.orElseThrow(()-> new RuntimeException("Compte Introuvable"));
我建议您看看此guide,以了解Optional的工作原理。
答案 1 :(得分:0)
较新的Spring Data版本使用findById
而不是findOne
,并且现在返回null
而不是返回Optional
。它永远不会返回null
,而是返回Optional.empty()
。
重写代码以正确使用Optional
@Override
public Compte ConsulterCompte(String codeCpte) {
return compteRepository.findById(codeCpte)
.orElseThrow(() -> new RuntimeException("Compte Introuvable"));
}
此外,您可能不应该抛出一般的RuntimeException
而是抛出更具体的一个。