gpt4 book ai didi

java - Spring boot 演示项目的问题

转载 作者:行者123 更新时间:2023-12-02 01:55:58 25 4
gpt4 key购买 nike

我最近开始学习java的spring boot,在这里找到了一个演示项目:https://www.devglan.com/spring-boot/file-upload-angularjs-spring-boot-rest我试图实现。 “演示”并没有真正深入,所以我只是尝试使用他拥有的代码在 intellij 中重新制作该项目。我目前在 DocumentServiceImpl.java 文件中遇到问题:

package com.formupload.demo.service;

import com.formupload.demo.dao.DocumentDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public class DocumentServiceImpl implements DocumentService {

@Autowired
private DocumentDao documentDao;


@Override
public ResponseMetadata save(MultipartFile file) throws IOException {

Document doc = new Document();
doc.setDocName(file.getOriginalFilename());
doc.setFile(file.getBytes());
documentDao.save(doc);
ResponseMetadata metadata = new ResponseMetadata();
metadata.setMessage("success");
metadata.setStatus(200);
return metadata;
}

@Override
public byte[] getDocumentFile(Long id) {
return documentDao.findById(id).getFile();
}

@Override
public List<Document> findAll() {
return (List<Document>) documentDao.findAll();
}
}

给我带来麻烦的部分是这一行: return documentDao.findbyId(id).getFile(); intellij 告诉我它找不到方法 getFile()。我不确定我做错了什么,因为我唯一改变的是在我使用 findById() 的同一行上没有使用 findOne() 。

这是 documentDao.java 代码:

package com.formupload.demo.dao;

import com.formupload.demo.service.Document;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface DocumentDao extends CrudRepository<Document, Long> {

}

如果有人可以提供帮助,我们将不胜感激。

这也是 Document.java 代码:

包com.formupload.demo.service;

import javax.persistence.*;

@Entity
public class Document {

private long id;

@Column
private String docName;

@Column
@Lob
private byte[] file;

public long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getDocName() {
return docName;
}

public void setDocName(String docName) {
this.docName = docName;
}

public void setFile(byte[] file) {
this.file = file;
}

public byte[] getFile() {
return file;
}

}

最佳答案

findById 返回 Optional<Document> ,不是Document .

您的代码应该是:

@Override
public byte[] getDocumentFile(Long id) {
return documentDao.findById(id)
.orElseThrow(() -> new IllegalArgumentException("Document not found: " + id))
.getFile();
}

关于java - Spring boot 演示项目的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com