波多野结衣 蜜桃视频,国产在线精品露脸ponn,a v麻豆成人,AV在线免费小电影

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了Java 8-CrudRepository<Developer,Long&>類型中的方法save(S)不適用于參數(shù)(可選<Developer&>)的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我開始使用Spring框架進(jìn)行Java開發(fā),為了獲得比Hello World更復(fù)雜的東西,我找到了本教程并嘗試遵循。

https://www.toptal.com/spring/beginners-guide-to-mvc-with-spring-framework

我發(fā)現(xiàn)的問題是,由于擴(kuò)展”CrudRepository”的My類返回一個(gè)可選的<Skills>和可選的<Developer>而不只是一個(gè)技能/開發(fā)人員對象,因此提議的代碼:在DevelopersController.java中出現(xiàn)錯(cuò)誤。

    @RequestMapping(value="/developer/{id}/skills", method=RequestMethod.POST)
    public String developersAddSkill(@PathVariable Long id, @RequestParam Long skillId, Model model) {
    Skill skill = skillRepository.findOne(skillId);
    Developer developer = repository.findOne(id);

    if (developer != null) {
        if (!developer.hasSkill(skill)) {
            developer.getSkills().add(skill);
        }
        repository.save(developer);
        model.addAttribute("developer", repository.findOne(id));
        model.addAttribute("skills", skillRepository.findAll());
        return "redirect:/developer/" + developer.getId();
    }

    model.addAttribute("developers", repository.findAll());
    return "redirect:/developers";
}

我尋找了一些關(guān)于Java 8可選的信息,但由于我仍然缺乏編程經(jīng)驗(yàn),我很難理解如何正確使用它。

我將代碼更改為,并設(shè)法排除了其中一個(gè)錯(cuò)誤…

    @RequestMapping(value="/developer/{id}/skills", method=RequestMethod.POST)
    public String developersAddSkill(
        @PathVariable Long id, 
        @RequestParam Long skillId, 
        Model model) {
    Optional<Skill> skill = skillRepository.findById(skillId);
    Optional<Developer> developer = repository.findById(id);

    developer.get().getSkills();
    if (developer != null) {
        if (!developer.get().hasSkill(skill)) {
            developer.get().getSkills().add(skill);
        }
        repository.save(developer);
        model.addAttribute("developer", repository.findById(id));
        model.addAttribute("skills", skillRepository.findAll());
        return "redirect:/developer/" + developer.getId();
    }
    return "Confused";
}

但我仍然在我的日食中收到錯(cuò)誤:

類型列表中的方法Add(Skill)不適用于參數(shù)(可選)
未為可選類型定義方法getID()
CrudRepository類型中的方法save(S)不適用于參數(shù)(可選)

我如何修復(fù)此問題?
另外,為什么行:

if (!developer.get().hasSkill(skill)) {

未顯示錯(cuò)誤,但行:

developer.get().getSkills().add(skill);

是嗎?

推薦答案

如changelog所述,較新版本的Spring-Data(上面的1.6.0)將為findByID()方法返回可選的。在Spring-Data的以前版本中,如果在數(shù)據(jù)庫中找不到具有指定id的對象,則findById()的結(jié)果將為null

如您的示例所示,Optional可能包含一些開發(fā)人員,也可能沒有開發(fā)人員。要檢查findById()是否返回了開發(fā)人員,您應(yīng)該使用:

//You probably should rename the developer variable to "result".
Optional<Developer> developer = repository.findById(id);
if(developer.isPresent()){
    //developer found, you can get it.
    Developer aDeveloper = developer.get();
    //aDeveloper.hasSkill(skill); is acessible now.
}else{
    //no developer found with the specified Id.
}

在Spring-Boot的早期版本中,如果Spring數(shù)據(jù)依賴低于1.6.x,您將使用:

Developer developer = repository.findById(id);
if (developer != null) {
    //developer found       
}

如果在沒有開發(fā)人員的情況下嘗試Developer.get(),將拋出異常。因此,請先查看isPresent()。

這篇關(guān)于Java 8-CrudRepository&lt;Developer,Long&>類型中的方法save(S)不適用于參數(shù)(可選&lt;Developer&>)的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標(biāo)簽:amp lt 不適用于 參數(shù) 可選 方法 類型
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定