我正在使用Spring Boot开发一个rest API项目,在我的POJO类“book”中,我创建了一个要由HibernateMap的表实体:
package com.libreria.proyect.libreria_el_aleph.model;
@Entity
@Table(name = "Libro")
public class Libro {
@Id
@Column(name = "ID_libro")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idLibro;
@Column(name = "ISBN")
private String isbn;
@Column(name = "Nombre_libro")
private String nombreLibro;
@Column(name = "Autor")
private String autor;
@Column(name = "Precio")
private Double precio;
@Column(name = "Cantidad")
private int cantidad;
public Libro(Integer idLibro, String isbn, String nombreLibro, String autor, Double precio, int cantidad ){
this.idLibro = idLibro;
this.isbn = isbn;
this.nombreLibro = nombreLibro;
this.autor = autor;
this.precio = precio;
this.cantidad = cantidad;
}
/**
* @return Integer return the idLibro
*/
public Integer getIdLibro() {
return idLibro;
}
/**
* @param idLibro the idLibro to set
*/
public void setIdLibro(Integer idLibro) {
this.idLibro = idLibro;
}
/**
* @return String return the isbn
*/
public String getIsbn() {
return isbn;
}
/**
* @param isbn the isbn to set
*/
public void setIsbn(String isbn) {
this.isbn = isbn;
}
/**
* @return String return the nombreLibro
*/
public String getNombreLibro() {
return nombreLibro;
}
/**
* @param nombreLibro the nombreLibro to set
*/
public void setNombreLibro(String nombreLibro) {
this.nombreLibro = nombreLibro;
}
/**
* @return String return the autor
*/
public String getAutor() {
return autor;
}
/**
* @param autor the autor to set
*/
public void setAutor(String autor) {
this.autor = autor;
}
/**
* @return Double return the precio
*/
public Double getPrecio() {
return precio;
}
/**
* @param precio the precio to set
*/
public void setPrecio(Double precio) {
this.precio = precio;
}
/**
* @return int return the cantidad
*/
public int getCantidad() {
return cantidad;
}
/**
* @param cantidad the cantidad to set
*/
public void setCantidad(int cantidad) {
this.cantidad = cantidad;
}
}
我试图POST到在我的控制器中实现CrudRepository的Get方法,但是当我发出测试请求时,所有Json元素的内容都是空的,我如何解决这个问题呢?
@RestController
@RequestMapping("Api/libros")
public class LibroController {
@Autowired
LibroServices service; <-- Here is my repository crud service
@GetMapping("/AllBooks")
public ResponseEntity<ArrayList<Libro>> getAllBooks(){
ArrayList<Libro> getAllBooks = this.service.listar();
return ResponseEntity.status(HttpStatus.OK).body(getAllBooks);
}
@PostMapping("/AllBooks")
public ResponseEntity<Libro> createNewBook(@RequestBody Libro libro){
Libro createNewBook = service.saveNewBook(libro);
return ResponseEntity.status(HttpStatus.OK).body(createNewBook) ;
}
}
作为请求,我还添加了我的服务文件的内容:
package com.libreria.proyect.libreria_el_aleph.model.Services;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.libreria.proyect.libreria_el_aleph.model.Libro;
import com.libreria.proyect.libreria_el_aleph.model.
InterfaceServices.ILibroServices;
import
com.libreria.proyect.libreria_el_aleph.model.Interfaces.ILibro;
@Service
public class LibroServices implements ILibroServices {
@Autowired(required = true)
ILibro repository;
@Override
public ArrayList<Libro> listar() {
return (ArrayList<Libro>) repository.findAll();
}
@Override
public Optional<Libro> listarById(Integer idlibro) {
return Optional.empty();
}
@Override
public Libro saveNewBook(Libro libro) { <-- save method
return repository.save(libro);
}
@Override
public void delete(Integer idLibro) {
}
}
3条答案
按热度按时间9vw9lbht1#
你的保存方法有问题,不管你插入的是什么,我认为它没有保存在数据库中。首先检查数据是否反映在数据库中。
3zwjbxry2#
尝试在POJO中添加一个不带id字段的构造函数,如下所示:
此外,发布一个没有ID的对象,因为您已经设置了@GeneratedValue(Strategy=GenerationType.IDENTITY),它将自动生成ID。
此外,不要创建与方法名相同的变量名。尝试将其更改为其他名称,如:
vom3gejh3#
在这里,您正在从 Postman 那里发送数据列表,并且在您的方法中,您正在接收一个对象,因此,如果您想要保存多个数据,请在控制器中使用这个
以及在服务使用中: