Olá pessoal,
Estou fazendo uns videos sobre API Rest com Spring Boot e até agora fiz exemplos báśicos e quando tentei aumentar a complexidade estou apanhando.
Minha ideia é no Post /classe, criar uma nova classe com alunos recebendo o seguinte json:
{
"nome": "Primeira Serie - A".
"alunos": [
"João",
"José",
"Maria"
]
}
E o retornar:
{
"id_classe": 101
}
Acontece que ele salva a classe, mas não salva os alunos e não tenho a ideia de como mostar somente o id da classe.
Criei as seguintes classes em Java:
Model Classe.java
package com.example.classe.model;
//Import's suprimidos
@Entity
@Table(name = "classe")
public class Classe {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nome;
@OneToMany(mappedBy = "classe")
private Set<Aluno> alunos = new HashSet<Aluno>();
//Get's e Set's suprimidos
}
Aluno.java
package com.example.classe.model;
//Import's suprimidos
@Entity
@Table(name = "aluno")
public class Aluno {
private static int tempID = 0;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nome;
@ManyToOne
@JoinColumn(name = "id_classe")
@JsonBackReference
private Classe classe;
public Aluno(String nome) {
tempID++;
this.id = tempID;
this.nome = nome;
}
public Aluno() {
}
//Get's e Set's suprimidos
}
Repository ClasseRepository.java
package com.example.classe.repository;
//Import's suprimidos
@Repository
public interface ClasseRepository extends JpaRepository<Classe, Integer> {
public List<Classe> findAll();
}
Controller ClasseController.java
package com.example.classe.controller;
//Import's suprimidos
@RestController
@RequestMapping("/classe")
public class ClasseController {
@Autowired
private ClasseRepository classeRepo;
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<Collection<Classe>> getClasse() {
return new ResponseEntity<>(classeRepo.findAll(), HttpStatus.OK);
}
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> salvarClasse(@RequestBody Classe classe) {
return new ResponseEntity<>(classeRepo.saveAndFlush(classe), HttpStatus.CREATED);
}
}
Será que estou fazendo tudo errado ou não entendi o conceito? Mas queria entender como fazer dessa forma.
Desde já Obrigado.