ManyToMany nao consigo salvar os relacionamentos

23/11/2019

7

Estou fazendo uma api com java e springboot,

TABELA_PACIENTE - contem o seguinte campos {
Integer id , String nome, String sobrenome, Integer idade;
}

E A

TABELA_ALERGIAS - contem os seguintes campos{
Integer id, String nome;
}

A TABELA_ALERGIAS ,já contes alergias no BANCO DE DADOS, eu gostaria de quando cria-se um PACIENTE, ele já relacionava com as alegrias, e salva, fiz um relacionamento ManyToMany, pois quando apagar o PACIENTE, nao pode apagar as alergias,
estou tentando fazer isso, porem quando eu

tento SALVAR O PACIENTE relacionando com as alergias, no POST ele recebe objeto com as alergias, porem quando salva, ele salva somente o PACIENTE .

@Entity
public class Paciente implements Serializable{
private static final long serialVersionUID = 1L;


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

private String nome;
private String sobrenome;
private Integer idade;

//@JsonManagedReference

@ManyToMany(mappedBy = "paciente")
private List<Alergia> alergias = new ArrayList<>();

public Paciente() {
}

public Paciente(Integer id, String nome, String sobrenome, Integer idade) {
super();
this.id = id;
this.nome = nome;
this.sobrenome = sobrenome;
this.idade = idade;
}
[GETS SETS..]
____________________________________________________________________________
@Entity
public class Alergia {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

private String nome;


// @JsonBackReference

@JsonIgnore
@ManyToMany
@JoinTable(name = "Paciente_Alergia",
joinColumns = @JoinColumn(name = "alergia_id"),
inverseJoinColumns = @JoinColumn(name = "Paciente_id"))
private List<Paciente> paciente = new ArrayList<>();

public Alergia() {
}

public Alergia(Integer id, String nome) {
super();
this.id = id;
this.nome = nome;
}
[GET'S SET'S ...]
________________________________________________________________________________

@RestController
@RequestMapping(value = "pacientes")
public class PacienteResource {

@Autowired
PacienteRepository pacienteRepository;

@Autowired
PacienteService pacienteService;

@GetMapping(value = "/")
public ResponseEntity<Optional<Paciente>> foundById(@PathVariable Integer id){

Optional<Paciente> obj = pacienteRepository.findById(id);
return ResponseEntity.ok().body(obj);
}

@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<Void> insert (@Valid @RequestBody Paciente obj){

obj = pacienteService.insert(obj);
URI uri = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/").buildAndExpand(obj.getId()).toUri();
return ResponseEntity.created(uri).build();
}


}
_________________________________________________________________________________
@Service
public class PacienteService {

@Autowired
PacienteRepository repo;

@Autowired
AlergiaRepository alergiaRepository;

public Paciente insert(Paciente obj) {
//obj.setId(null);



return repo.save(obj);
}


}
_________________________________________________________________________________
@Repository
public interface AlergiaRepository extends JpaRepository<Alergia, Integer>{

}
_________________________________________________________________________________
@Repository
public interface PacienteRepository extends JpaRepository<Paciente, Integer> {

}
________________________________________________________________________________

estou criando no Banco assim
public void run(String... args) throws Exception {

Paciente p1 = new Paciente(null, "Usuario01" , "Lopes De Souza", 22);

Paciente p2 = new Paciente(null, "User2", "teste", 32);

Alergia ale1 = new Alergia(null, "CACAU");
Alergia ale2 = new Alergia(null, "DIPRIONA");
Alergia ale3 = new Alergia(null, "PARACEDAMOL");
Alergia ale4 = new Alergia(null, "BANANA");

p1.getAlergias().add(ale1);
p2.getAlergias().add(ale4);

ale1.getPaciente().add(p1);
ale4.getPaciente().add(p2);

pacienteRepository.saveAll(Arrays.asList( p1 , p2));
alergiaRepository.saveAll(Arrays.asList(ale1 , ale2, ale3 , ale4));

}

}
_____________________________________________________________________________
desse jeito ele salva e relaciona perfeitamente
porem quando passo no POSTMAN, para teste,

{
"nome": "Ariel",
"sobrenome": "Lopes De Souza",
"idade": 22,
"alergias": [
{
"id": 2 ,
"nome": "CACAU"
}
]
}

ELE CHEGA NO POST E NO SERVICES, porem salva somente o usuario sem as alergias

**texto em negrito**
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar