Ich habe eine große zusammenhängende Grafik von Entitäten (ca. 1.2k). Beim Versuch, zu speichern, löst die JVM einen StackOverflowError (unten) aus. Die Entity/Orm-Klassen verwenden nur die Kaskade Speichern/Aktualisieren auf den Knoten, die Knoten verbinden. Bei kleineren Graphengrößen funktioniert Kaskade gut, bei größeren Größen jedoch bricht sie. Kann jemand eine Dokumentation vorschlagen oder einen Einblick in mögliche Einschränkungen in Hibernate geben?Hibernate SaveOrUpdate auf großen verbundenen Grafik
Abhängigkeiten:
- 4.0.1
- HyperSQL 2.2 Ruhezustand
Beispiel:
-Node_1
---- leaf_a => Knoten_2
----leaf_c => node_4
---- leaf_b => node_3
----leaf_d => node_5
JVM Fehler:
java.lang.StackOverflowError bei java.util.concurrent.ConcurrentHashMap.get (ConcurrentHashMap.java:768) bei org.hibernate.service.internal.AbstractServiceRegistryImpl.locateServiceBinding (AbstractServiceRegistryImpl.java:114) bei org.hibernate.service.internal.AbstractServiceRegistryImpl.locateServiceBinding (AbstractServiceRegistryImpl.java:109) bei org.hibernate.service.internal.AbstractSer viceRegistryImpl.getService (AbstractServiceRegistryImpl.java:124) bei org.hibernate.internal.SessionImpl.eventListenerGroup (SessionImpl.java:624) bei org.hibernate.internal.SessionImpl.listeners (SessionImpl.java:620) bei org. hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:614) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java : 258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine .internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal. Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal. DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveO rUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org .hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Kaskade.Java: 323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascadeCollectionElements (Cascade.java:409) bei org.hibernate. machine.internal.Cascade.cascadeCollection (Cascade.java:350) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade. java: 208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org.hibernate. event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOr UpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java: 380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal. Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal. DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultS aveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate. internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java : 380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine .internal.Cascade.cascadeCollectionElements (Cascade.java:409) bei org .hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:350) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org .hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl. java: 615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine .internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java : 208) bei org.hibernate.engine.internal.Casca de.cascadeCollectionElements (Cascade.java:409) bei org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:350) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal. Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetach ed (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction .java: 258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate .engine.internal.Cascade.cascadeProperty (Cas cade.java:208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org. hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org .hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascadeCollectionElements (Cascade.java:409) bei org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:350) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java: 326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate. engine.internal.Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener. Java: 335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate. e vent.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java: 380) bei org.hibernate.engine.internal .Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascadeCollectionElements (Cascade.java:409) bei org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java: 350) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal. Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal. DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultS aveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate. internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java : 380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine .internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine. internal.Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java: 335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event. internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java: 380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal .Cascade.cascadeCollectionElements (Cascade.java:409) bei org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:350) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cas cade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal. DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:90) bei org.hibernate.internal.SessionImpl.fireSaveOrUp Datum (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) bei org .hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascadeCollectionElements (Cascade.java:409) bei org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:350) bei org .hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:326) bei org.hibernate.engine.internal.Cascade.cascadeProperty (C ascade.java:208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:132) bei org. hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:9 0) bei org.hibernate.internal.SessionImpl.fireSaveOrUpdate (SessionImpl.java:615) bei org.hibernate.internal.SessionImpl.saveOrUpdate (SessionImpl.java:608) bei org.hibernate.engine.spi.CascadingAction $ 5 .cascade (CascadingAction.java:258) bei org.hibernate.engine.internal.Cascade.cascadeToOne (Cascade.java:380) bei org.hibernate.engine.internal.Cascade.cascadeAssociation (Cascade.java:323) bei org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) bei org.hibernate.engine.internal.Cascade.cascade (Cascade.java:165) bei org.hibernate.engine.internal.Cascade .cascade (Cascade.java:132) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate (DefaultSaveOrUpdateEventListener.java:361) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate (DefaultSaveOrUpdateEventListener.java:335) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) bei org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate (DefaultSaveOrUpdateEventListener.java:109) bei
Hey Rhinds - es ist definitiv ein legitimer Rekursionsprozess, wie er von Hibernate während des Kaskadenspeichers durchgeführt wird. Ich kann den Stack erhöhen und es funktioniert, vielleicht ist es genauso einfach. War neugierig zu wissen, ob jemand anderes irgendwelche verwandten Informationen gefunden hat. Danke für den Link. Prost, –