Errro de identificação de instância quando alterada de 1 para 2
8 respostas
javaspring-boot
H
Henders
Olá, estou com este erro:
identifier of an instance of br.com.empresa.entrevista.data.entity.Pais was altered from 1 to 2
OU seja, não consigo mudar um País de um Estado.
Tenho que fazer mudanças na entidade Pais não é isso? Mas Veja minha entidade:
Pais.java
@Getter@Setter@Entity@Table(name="Pais")@SQLDelete(sql="UPDATE pais SET ativo = 0 WHERE id = ?")@Where(clause="ativo = 1")publicclassPaisextendsBaseEntity{privateStringnome;privateStringsigla;@OneToMany(fetch=FetchType.LAZY,mappedBy="pais")privateSet<Estado>estados;}
@Jonathan_Medeiros você teria alguma ideia? Desculpe te incomodar cara, mas se puder me ajudar agradeço. Até o @pmlm é um cara também gente boa que vez ou outra me dá uma ideia…
Jonathan_Medeiros
O problema em si está em estado e não no país, certo?
Você está tentando atualizar dados de um estado e não pais, pelo menos é o que me parece!
Compartilha suas classes de estado, controller e entidade!
H
Henders
Isso, me equivoquei, é Estado mesmo. Veja aí @Jonathan_Medeiros por favor:
Estado.java:
@Getter@Setter@Entity@SQLDelete(sql="UPDATE estado SET ativo = 0 WHERE id = ?")@Where(clause="ativo = 1")publicclassEstadoextendsBaseEntity{privateStringnome;privateStringsigla;privateDoublepopulacao;@ManyToOne(fetch=FetchType.EAGER)@JoinColumn(nullable=false)privatePaispais;@OneToMany(fetch=FetchType.LAZY,mappedBy="estado")privateSet<Cidade>cidades;}
Pelo que me parece você não busca país no DB, certo?
Para atualizar o país contido no estado primeiro você precisa colocá-lo em um estado gerenciável pelo JPA, ou seja, dar ao JPA conhecimento do objeto que está sendo modificado, no caso do update isso é feito através de uma simples busca de país no banco de dados e setá-lo na entidade.
Perceba, não digo que o registro não exista em sua base de dados, até porquê ele está sendo carregado em tela, mas sim que você não faz a busca dele antes de atualizar o estado, compreende?
No método de atualizar o estado teria que ter algo mais ou menos assim: