Tengo una relación de varios a varios si la tabla de enlaces tiene un campo adicional. Por lo tanto la relación está hecho con 2 relaciones de uno a muchos de acuerdo con por debajo de tutorial:Hibernar: fusionarse con resultados de muchos a muchos en StackOverflowError
I tienen los 2 entidades, tercera entidad que define la tabla de enlace y constan de un campo de ID @Embeddable.
La relación se define como:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.compound", cascade = CascadeType.ALL)
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.structure", cascade = CascadeType.ALL)
eran pk = el campo ID @Embeddable. Insertar y borrar funciona bien sin embargo cuando llamo
session.merge(compound);
consigo un StackOverflowError y muestra que Hibernate es hacer toneladas de sentencias de selección de registro. Tenga en cuenta que la base de datos contiene exactamente 1 asociación, por ej. 1 compuesto que contiene 2 estructuras. Parece que la hibernación entra en un ciclo sin fin.
He visto esta solución también en http://giannigar.wordpress.com/2009/09/04/mapping-a-many-to-many-join-table-with-extra-column-using-jpa/, pero ¿cómo se actualiza con esto?
Tal vez está cargando sus tablas de muchos a muchos a través de la relación de muchos a muchos. Imagine las referencias 'A1'' B1'. 'B1' hace referencia a' A1' y 'A2'. 'A2' hace referencia a' B2'. Y así. Con cada cambio de un lado de la relación al otro, obtienes un nivel de pila adicional. – SpaceTrucker
Persistir y cargar funciona pero al llamar a fusionar aparece el problema. –
@SpaceTrucker, sin embargo, Merge debe gestionar las entidades visitadas por una sub-operación de fusión anterior. beginner_ por favor comparta sus entidades completas con un caso de prueba para que podamos ayudarlo mejor. –