2012-03-26 12 views
0

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

Antwort

1

Wenn die Kaskade für kleinere Graphen arbeitet wäre es mir scheinen, dass das Problem mit dem rekursiven zusammenhängt persist stapeln zu sein tief und ist Stackoverflowing (eine der häufigsten Ursachen für Stackoverflows Rekursion, die nicht beendet wird, kann aber auch passieren, wenn Sie einen wirklich legitimen dee haben p Rekursionsstapel. Überprüfen Sie die Antwort hier: Stack overflows from deep recursion in Java? Die ausgewählte Antwort bietet Details zur Änderung Ihrer Stack-Größe, obwohl, wenn Sie eine Menge Datenwachstum erwarten, dann denke ich, müssen Sie über Ihre Laufzeitumgebung Anforderungen und wie sie skalieren denken.

-ss Stacksize to increase the native stack size or 

-oss Stacksize to increase the Java stack size, 

The default native stack size is 128k, with a minimum value of 1000 bytes. The default java stack size is 400k, with a minimum value of 1000 bytes. 
+0

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, –

Verwandte Themen