JPA - Salvar objeto com atributo list

Olá pessoal, ainda não tenho muito conhecimento em JPA e estou com um problema,antes de vim aqui já pesquisei bastante mas não consegui arrumar meu código,talvez seja um problema simples que alguém possa me dar uma luz.

É o seguinte,tenho uma classe assim com nome Comanda que tem um atributo do tipo
list de ComandaItem.

@JoinColumn(name = "id_comanda")
@OneToMany|
private List<ComandaItem> listaItens; 

E na classe ComandaItem tenho também o objeto Comanda dessa maneira.

@ManyToOne
@JoinColumn(name = "id_comanda",nullable = false)
private Comanda comanda;

Só que quando vou salvar um objeto comanda dá o seguinte erro.

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update comanda_item set id_comanda=? where id=?

Aí fui mexendo no código e vi que o problema desse erro é por que tem dados na list,o atributo list não está null,mas fazendo isso o objeto salva

List<ComandaItem> listaItem = ((Comanda) obj).getListaItens();
Comanda comanda = (Comanda) obj;
comanda.setListaItens(null);
comandaRepository.save(comanda);
listaItem.forEach(e -> e.setComanda(comanda));		
comandaItemRepository.saveAll(listaItem);

Eu pesquisei e fiquei meio confuso como mapear esse atributo,alguém pode me dar alguma dica de o que está errado?

Você não precisa mapear o JoinColumn dos dois lados de um relacionamento, até pq a coluna que é chave estrangeira provavelmente não existe nas duas tabelas, você deve usar o atributo “mappedBy” na anotação do outro lado da que tem o JoinColumn.

Ficaria assim em Comanda, (pelo que eu vi, ComandaItem já está certo):

// Aqui comanda é o atributo em ComandaItem que possui o @JoinColumn com Comanda
@OneToMany(mappedBy="comanda") 
private List<ComandaItem> listaItens;
1 curtida