Olá, estou tendo que esta me fazendo quebrar a cabeça. Quando salvo um item que possui alguns relacionamentos @ManyToMany, ao salvar, a persistência ocorreu normalmente, mas quando é para editar o erro ocorre, e esta ocorrendo justamente nos relacionamentos. Segue os dois métodos e o erro que vou postar em partes:
// Lista todas as receitas
@RequestMapping(value = "listAll{id}", method = { RequestMethod.GET,
RequestMethod.POST }, produces = "application/json")
public @ResponseBody ResponseEntity<DataTableMinhasReceitas> getListReceitas(
HttpServletRequest request, String action, @PathVariable("id") Long id) {
Map<String, String[]> map = request.getParameterMap();
MinhasReceitas receitas = new MinhasReceitas();
List<MinhasReceitas> listAllMinhasReceitas = receitasService.findAll();
DataTableMinhasReceitas dataTableMinhasReceitas = new DataTableMinhasReceitas();
for (Entry<String, String[]> entry : map.entrySet()) {
String key = entry.getKey();
String[] values = entry.getValue()
for (String valor : values)
System.out.println(key + " - " + valor);
}
}
if(action == null){
dataTableMinhasReceitas.setData(listAllMinhasReceitas);
dataTableMinhasReceitas.setRecordsFiltered(listAllMinhasReceitas.size());
dataTableMinhasReceitas.setRecordsTotal(listAllMinhasReceitas.size());
return ResponseEntity.status(HttpStatus.OK).body(dataTableMinhasReceitas);
} else if(action.contains("create")){
receitas = new MinhasReceitas();
criarEditarAjax(action, id, map, receitas);
} else if(action.contains("edit")){
receitas = receitasService.findById(id);
criarEditarAjax(action, id, map, receitas);
}else if(action.contains("remove"))
receitasService.delete(id);
}
dataTableMinhasReceitas.setData(listAllMinhasReceitas);
dataTableMinhasReceitas.setRecordsTotal(8);
dataTableMinhasReceitas.setRecordsFiltered(7);
dataTableMinhasReceitas.setDraw(5);
return ResponseEntity.status(HttpStatus.OK).body(dataTableMinhasReceitas);
}
private void criarEditarAjax(String action, Long id, Map<String, String[]> map, MinhasReceitas receitas) {
for (Entry<String, String[]> entry : map.entrySet()) {
String key = entry.getKey();
String[] values = entry.getValue();
for (String valor : values) {
System.out.println(key + " - " + valor);
if (key.contains("descricaoReceita")) {
if (valor != null && !valor.isEmpty()) {
receitas.setDescricaoReceita(valor);
}
}
if (key.contains("dataReceita")) {
if (valor != null && !valor.isEmpty()) {
LocalDate data = LocalDate.parse(valor);
receitas.setDataReceita(data);
}
}
if (key.contains("valorReceita")) {
if (valor != null && !valor.isEmpty()) {
BigDecimal valorReceita = new BigDecimal(valor);
receitas.setValorReceita(valorReceita);
}
}
if (key.contains("receitaCor")) {
if (valor != null && !valor.isEmpty()) {
String corReceita = valor;
receitas.setCor(corReceita);
}
}
if (key.contains("pagamento")) {
if (valor != null && !valor.isEmpty()){
if(valor.equals("1")){
receitas.setPagamento(true);
}else if(valor.equals("0")){
receitas.setPagamento(false);
}
}
}
if (key.contains("minhasContas")) {
MinhasContas mc = contasService.findByNome(valor);
if (valor != null && !valor.isEmpty()) {
receitas.setMinhasContas(Arrays.asList(mc));
}
}
if (key.contains("tipoReceitas")) {
CatTipoReceitas tipoReceitas = tipoReceitasService.findByNome(valor);
if (valor != null && !valor.isEmpty()) {
receitas.setTipoReceitas(Arrays.asList(tipoReceitas));
}
}
if (key.contains("etiquetas")) {
List<Etiquetas> ListEtiquetas = etiquetasServices.findByNome(valor);
if (valor != null && !valor.isEmpty()) {
receitas.setEtiquetas(ListEtiquetas);
}
}
if (key.contains("receitaFixa")) {
if (valor != null && !valor.isEmpty()){
if(valor.equals("1")){
receitas.setReceitaFixa(true);
}else if(valor.equals("0")){
receitas.setReceitaFixa(false);
}
}
}
if (key.contains("receitaFixaQuantidade")) {
if (valor != null && !valor.isEmpty()) {
Integer recFixQuant = Integer.valueOf(valor);
receitas.setReceitaFixaQuantidade(recFixQuant);
}
}
if (key.contains("repetirPorPeriodo")) {
if (valor != null && !valor.isEmpty()) {
receitas.setRepetirPorPeriodo(RepetirPorPeriodo.QUINZENAL);
}
}
if (key.contains("addObservacao")) {
if (valor != null && !valor.isEmpty()) {
receitas.setAddObservacao(valor);
}
}
}
}
if(action.contains("create"))
receitasService.save(receitas);
}
if(action.contains("edit")){
receitasService.updateAjax(receitas);
}
}