是否不存在id为0的类.db.model.FileDB实体



我在Spring Boot中有一个带有JPA和Spring Security的REST API,我成功地上传了一个文件并下载了它,但当我试图通过ID删除数据库中的现有用户对象时,我得到了以下错误消息:

org.springframework.dao.EmptyResultDataAccessException: No class model.FileDB entity with id 
undefined exists!

我是react/springboot的新手,找不到确切的错误,请帮助。

fileDB型号

@Entity
@Table(name = "files")
public class FileDB {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
private String id;

FileController.java

@DeleteMapping("/files/{id}")
public ResponseEntity<String> deleteFile(@PathVariable String id){
storageService.deleteFile(id);
return new ResponseEntity<>("file deleted", HttpStatus.OK);
}

FileService.java

public void deleteFile(String id) {
fileDBRepository.deleteById(id);
}

******反应

export default class UploadFiles extends Component {
constructor(props) {
super(props);
this.selectFiles = this.selectFiles.bind(this);
this.upload = this.upload.bind(this);
this.uploadFiles = this.uploadFiles.bind(this);

this.state = {
selectedFiles: undefined,
progressInfos: [],
message: null,
fileInfos:  [],
files:[]
};
}
componentDidMount() {
UploadService.getFiles().then((response) => {
this.setState({
fileInfos: response.data,
});
});
}
deleteFile=(fileId) =>{
axios.delete("http://localhost:8181/files/"+fileId)
.then(response => {
if(response.data !=null){
this.setState({
files:this.state.files.filter(file  => file.id !== fileId)  
});
}
});
};
render()
{
//code
<Table bordered hover striped variant="dark" >
<thead>
<tr>
<th> List of Files </th>

<th> Actions</th>
</tr>
</thead>
<tbody>
{
fileInfos &&
fileInfos.map((file, id) => 
<tr key = {id}>
<td> <a href={file.url}>{file.name}</a> </td>   

<td>

<ButtonGroup>

<Button onClick={this.deleteFile.bind(this,id)}  
size="sm" variant="outline-danger">
<FontAwesomeIcon icon={faTrash} />
</Button>
{' '}
<Button  size="sm" variant="outline-danger">
<FontAwesomeIcon icon={faEye} />
</Button>
</ButtonGroup>

</td>
</tr>
)
}
</tbody>
</Table>
}

你的Java代码APi工作正常,我认为问题出在你的客户端,如果UploadService.getFiles()的响应是这样的:

{
....
data:[
{
"id": "afd564",
"name": "hello",
"link": "this the link"
}
]
....
}
export default class UploadFiles extends Component {
constructor(props) {
super(props);
this.selectFiles = this.selectFiles.bind(this);
this.upload = this.upload.bind(this);
this.uploadFiles = this.uploadFiles.bind(this);

this.state = {
selectedFiles: undefined,
progressInfos: [],
message: null,
fileInfos:  [],
files:[]
};
}
componentDidMount() {
UploadService.getFiles().then((response) => {
this.setState({
fileInfos: response.data,
});
});
}
deleteFile=(fileId) =>{
axios.delete("http://localhost:8181/files/"+fileId)
.then(response => {
if(response.data !=null){
this.setState({
files:this.state.files.filter(file  => file.id !== fileId)  
});
}
});
};
render()
{
//code
<Table bordered hover striped variant="dark" >
<thead>
<tr>
<th> List of Files </th>

<th> Actions</th>
</tr>
</thead>
<tbody>
{
fileInfos &&
fileInfos.map((file, id) => 
<tr key = {id}>
<td> <a href={file.url}>{file.name}</a> </td>   

<td>

<ButtonGroup>

<Button onClick={this.deleteFile.bind(this,file.id)}  
size="sm" variant="outline-danger">
<FontAwesomeIcon icon={faTrash} />
</Button>
{' '}
<Button  size="sm" variant="outline-danger">
<FontAwesomeIcon icon={faEye} />
</Button>
</ButtonGroup>

</td>
</tr>
)
}
</tbody>
</Table>
}

最新更新