Olá, galera!
Tenho o seguinte cenário:
Uma entidade "Empresa" que contém relacionamento OneToMany com lojas.
@OneToMany(mappedBy = "empresa",)private Set lojas = new HashSet<>();
E na entidade "Loja" existe o relacionamento com a entidade "Estado".
@ManyToOne(cascade=CascadeType.ALL) @JoinColumn(name="codIBGE_Estado", referencedColumnName="codIBGE") private Estado estado;
Eu recebo o objeto Empresa, já com as suas lojas e estados, de um Web Service e sincronizo/persisto este objeto no BD da minha aplicação. Ao salvar a entidade "Empresa", com seus relacionamentos, já é persistido as lojas e seus respectivos estados.
Problema: Quando tenho duas lojas da mesma empresa que possuem o mesmo estado, por exemplo São Paulo - SP, acontece o seguinte erro:
javax.ejb.EJBException: java.lang.IllegalStateException: Multiple representations of the same entity [...] are being merged. Detached: [SP]; Detached: [SP]
Pesquisando achei este bug https://hibernate.atlassian.net/browse/HHH-9106.
Pelo que entendi, isso ocorre por conta de uma melhoria de performance no merge do Hibernate. Para funcionar o merge de múltiplas representações da mesma entidade é necessário incluir a seguinte anotação no persistence.xml:
Dessa maneira realmente funciona, mas gostaria de saber se há outra alternativa para não perder a performance no merge do Hibernate ou se existe outra maneira "melhor" para se fazer isso.
Obrigado, desde já!