Essa está sendo minha inserção:
{
“title”: “A Revolução dos Bichos”,
“isbn”: “9780451526342”,
“yearPublication”: 1945,
“cover”: “https://carrefourbr.vtexassets.com/arquivos/ids/14566021/Kit-1984---A-Revolucao-dos-Bichos-George-Orwell-Capa-Comum.jpg?v=637510501552670000”,
“description”: “A Revolução dos Bichos é um livro escrito por George Orwell, publicado pela primeira vez em 1945. Situado em uma fazenda, o romance utiliza animais antropomorfizados para retratar uma crítica ao totalitarismo e ao abuso de poder.”,
“pages”: 150,
“author”: {
“name”: “George Orwell”
},
“publishingCompany”: {
“name”: “Editora Globo”
},
“gender”: {
“name”: “Ficção”
}
}
E aqui está sendo meu retorno:
{
“id”: 452,
“title”: “A Revolução dos Bichos”,
“author”: null,
“isbn”: “9780451526342”,
“yearPublication”: 1945,
“publishingCompany”: null,
“cover”: “https://carrefourbr.vtexassets.com/arquivos/ids/14566021/Kit-1984---A-Revolucao-dos-Bichos-George-Orwell-Capa-Comum.jpg?v=637510501552670000”,
“gender”: null,
“description”: “A Revolução dos Bichos é um livro escrito por George Orwell, publicado pela primeira vez em 1945. Situado em uma fazenda, o romance utiliza animais antropomorfizados para retratar uma crítica ao totalitarismo e ao abuso de poder.”,
“pages”: 150
}
Eu queria entender por que Autor, gênero e Editora estão vindo como nulos, segue também meu controller, DTOs e Models:
Controller:
public class BooksController {
@Autowired
BooksRepository booksRepository;
@PostMapping("/api/v1/books")
public ResponseEntity<BooksModels> saveBooks(
@RequestBody @Valid BooksRecordDTO booksRecordDTO) {
var booksModels = new BooksModels();
BeanUtils.copyProperties(booksRecordDTO, booksModels);
return ResponseEntity.status(HttpStatus.CREATED).body(booksRepository.save(booksModels));
}
}
DTO:
public record BooksRecordDTO(
@NotBlank
String title,
@NotBlank
String isbn,
@NotNull
Integer yearPublication,
@NotBlank
String cover,
@NotBlank
String description,
@NotNull
Integer pages,
@JsonProperty("author")
@Valid
AuthorRecordDTO author,
@JsonProperty("publishing_company")
@Valid
PublishingCompanyRecordDTO publishingCompany,
@JsonProperty("gender")
@Valid
GenderRecordDTO gender
) {
}
Models:
@Entity
@Table(name = "TB_BOOKS")
public class BooksModels extends RepresentationModel<BooksModels> implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
@ManyToOne
@JoinColumn(name = "author_id")
private AuthorModels author;
private String isbn;
private Integer yearPublication;
@ManyToOne
@JoinColumn(name = "publishing_company_id")
private PublishingCompanyModels publishingCompany;
private String cover;
@ManyToOne
@JoinColumn(name = "gender_id")
private GenderModels gender;
private String description;
private Integer pages;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public AuthorModels getAuthor() {
return author;
}
public void setAuthor(AuthorModels author) {
this.author = author;
}
public String getIsbn() {
return isbn;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
public Integer getYearPublication() {
return yearPublication;
}
public void setYearPublication(Integer yearPublication) {
this.yearPublication = yearPublication;
}
public PublishingCompanyModels getPublishingCompany() {
return publishingCompany;
}
public void setPublishingCompany(PublishingCompanyModels publishingCompany) {
this.publishingCompany = publishingCompany;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public GenderModels getGender() {
return gender;
}
public void setGender(GenderModels gender) {
this.gender = gender;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getPages() {
return pages;
}
public void setPages(Integer pages) {
this.pages = pages;
}
}