2012-03-26 88 views
0

我有一个实体大型互连图(约1.2k)。当试图保存时,JVM抛出一个stackOverflowError(见下文)。实体/ orm类仅在连接节点的顶点上使用保存/更新级联。在较小的图形尺寸上,级联可以正常工作,但尺寸较大时会中断。有人可以提供一些文档或提供有关Hibernate可能的限制的任何洞察?大型连接图上的休眠SaveOrUpdate

依赖关系:

  • 休眠4.0.1
  • 的HyperSQL 2.2

实施例:

-Node_1

---- leaf_a => Node_2

  ----leaf_c => node_4 

---- leaf_b => Node_3上

  ----leaf_d => node_5 

JVM错误:在java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)

java.lang.StackOverflowError的 在org.hibernate.service.internal.AbstractServiceRegistryImpl.locateServiceBinding(AbstractServiceRegistryImpl.java:114) 在org.hibernate.service.internal.AbstractServiceRegistryImpl.locateServiceBinding(AbstractServiceRegistryImpl.java:109) 在org.hibernate.service.internal.AbstractSer viceRegistryImpl.getService(AbstractServiceRegistryImpl.java:124) 在org.hibernate.internal.SessionImpl.eventListenerGroup(SessionImpl.java:624) 在org.hibernate.internal.SessionImpl.listeners(SessionImpl.java:620) 在有机hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:614) at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java :258) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine .internal.Cascade.cascadeProperty(Cascade.java:208) 在org.hibernate.engine.internal。 Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal。 DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveO rUpdate(SessionImpl.java:615) 在org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) 在org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) 在组织.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) 在org.hibernate.engine.internal.Cascade.cascadeAssociation(级联。java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:409) at org.hibernate。 engine.internal.Cascade.cascadeCollection(Cascade.java:350) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade。 java:208) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org.hibernate。 event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) at org.hibernate.event.internal.DefaultSaveOr UpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) 在org.hibernate.internal.SessionImpl.saveOrUpdate( SessionImpl.java:608) 在org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) 在org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal。 Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal。 DefaultSaveOrUpdateEventListener.performSaveOrUpdate(默认aveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) 在org.hibernate作为。 internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java :380) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine .internal.Cascade.cascadeCollectionElements(Cascade.java:409) at org .hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:350) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) 在org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) 在org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) 在有机.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached (DefaultSaveOrUpdateEventListener.java:239) at org。hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl。 Java的:615) 在org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) 在org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) 在org.hibernate.engine .internal.Cascade.cascadeToOne(Cascade.java:380) 在org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) 在org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java :208) at org.hibernate.engine.internal.Casca de.cascadeCollectionElements(Cascade.java:409) at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:350) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal。 Cascade.cascade(Cascade.java:132) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetach ED(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction .java:258) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate .engine.internal.Cascade.cascadeProperty(CAS在org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org。 hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached( DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade (CascadingAction.java:258) 在org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) 在org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) 在有机.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:409) at org.hibernate.engine.internal.Cascade.cascadeCollection (Cascade.java:350) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade。java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) at org.hibernate。 engine.internal.Cascade.cascade(Cascade.java:132) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener。的java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate作为。 Ë vent.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) 在org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) at org.hibernate.engine.internal .Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:409 ) at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:350)org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal。 Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal。 DefaultSaveOrUpdateEventListener.performSaveOrUpdate(默认aveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) 在org.hibernate作为。 internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java :380) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine .oclass.Cascade.cascade(Cascade.java:165) at org.hibernate.engine。 internal.Cascade.cascade(Cascade.java:132) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java: 335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event。 internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) at org.hibernate.internal。SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380 ) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal .Cascade.cascadeCollectionElements(Cascade.java:409) at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:350) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326 ) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cas cade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal。 DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 在org.hibernate.internal.SessionImpl.fireSaveOrUp日期(SessionImpl.java:615) at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) at org.hibernate.engine.spi.CascadingAction $ 5.cascade(CascadingAction.java:258) at org .hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) at org.hibernate.engine.internal.Cascade.cascadeProperty (Cascade.java:208) 在org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:409) 在org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:350) 在有机.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) at org.hibernate.engine.internal.Cascade.cascadeProperty(C在org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:132) at org。 hibernate.event.internal.DefaultSaveOrUpdateEventListener.cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached( DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:9 0) 在org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:615) 在org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:608) 在org.hibernate.engine.spi.CascadingAction $ 5 (cascade.java:328) at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:380) at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:208) at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:165) at org.hibernate.engine.internal.Cascade .cascade(Cascade.java:132) at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener。cascadeOnUpdate(DefaultSaveOrUpdateEventListener.java:361) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:335) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:239) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 在

回答

1

如果级联正在为小图,将在我看来,这个问题是关系到递归一直存在堆叠在过深并且是stackoverflowing(stackoverflows最常见的原因之一是递归不会终止,但如果你有真正合法的dee也可能发生p递归栈。

检查答案在这里:Stack overflows from deep recursion in Java?选择的答案提供了更改堆栈大小的详细信息,但如果你希望大量的数据增长,那么我想你需要考虑你的运行环境的要求,以及如何将规模。

-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

嘿rhinds - 这绝对是一个合法的递归过程,因为它是在级联保存/更新操作期间由Hibernate执行的。我可以增加堆栈,它可以工作,所以也许它就这么简单。很想知道是否有其他人遇到或遇到过任何相关信息。感谢您的链接。干杯, – 2012-03-26 15:26:38