CrudRepository findById 不返回 java.util。可选的

公共接口 LmsRepository 扩展了 CrudRepository 我没有 findOne 方法来获取单个计数,所以当我使用 findById 时,我得到了这个异常。“在类型 [java.util.Optional] 上找不到属性 [id]” 我该如何解决这个问题?


这是我的 CrudRepo


@Repository

public interface LmsRepository extends CrudRepository<Book, Long> {



}

实体文件


@Entity(name="lms_tbl")

public class Book {


@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private long id;


@Column(name="book_name")

private String bookName;


private String author;


@Column(name="purchase_date")

@Temporal(TemporalType.DATE)

private Date purchaseDate;


public long getId() {

    return id;

}


public void setId(long id) {

    this.id = id;

}


and other....

服务文件


@Service

public class LmsService {


@Autowired

private LmsRepository lmsRepository;


public Collection<Book> findAllBooks(){

    ArrayList<Book> books = new ArrayList<Book>();

    for (Book book : lmsRepository.findAll()) {

        books.add(book);

    }


    return books;

}


public void deleteBook(long id) {


    lmsRepository.deleteById(id);

}


public Optional<Book> findById(Long id) {


    return lmsRepository.findById(id);

}

}


控制器文件


@Controller

public class MainController {


@Autowired

private LmsService lmsService;



@GetMapping("/")

public String index(HttpServletRequest req) {

    req.setAttribute("books", lmsService.findAllBooks());

    req.setAttribute("mode","BOOK_VIEW");

    return "index";

}


@GetMapping("/updateBook")

public String index(@RequestParam Long id,HttpServletRequest req) {

    req.setAttribute("book", lmsService.findById(id));

    req.setAttribute("mode","BOOK_EDIT");

    return "index";

}

}


我尝试在 CrudRepo 中添加新方法,但它不起作用。


繁星coding
浏览 390回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java