2012-04-23 6 views
1

私の現在のプロジェクトでは、私はHibernate 3を使用しています。私が作業しているツールは、MS SQL Serverデータベースに接続します。このツールは2つの異なるマシンにインストールされ、どちらも同じデータベースに接続されます。Stackoverflowerror/Hibernate、Collections、Session.refresh(...)で未解決のオブジェクト例外

最初のマシンでは、コレクションを含むオブジェクトを変更しています。 2番目のマシンでは、最初のマシンで行われた変更を見るためにsession.refresh(...)を使用しています。

コレクションにオブジェクトを追加して更新すると、Stackoverflowerrorが発生します。コレクションからオブジェクトを削除してリフレッシュすると、UnresolvedObjectExceptionが返されます。

session.evict(...) 
session.get(...) 

と思われます。しかし、session.refresh(...)。どうして?ここで

がフルスタックトレースです:

java.lang.StackOverflowError 
at net.sourceforge.jtds.jdbc.JtdsStatement.<init>(JtdsStatement.java:129) 
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.<init>(JtdsPreparedStatement.java:99) 
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java:2456) 
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.prepareStatement(ConnectionJDBC2.java:2414) 
at net.sourceforge.jtds.jdbcx.proxy.ConnectionProxy.prepareStatement(ConnectionProxy.java:394) 
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534) 
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452) 
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1573) 
at org.hibernate.loader.Loader.doQuery(Loader.java:696) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:588) 
at org.hibernate.loader.Loader.doQuery(Loader.java:724) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71) 
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65) 
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072) 
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434) 
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415) 
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165) 
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:207) 
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126) 
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905) 
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:873) 
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:590) 
at org.hibernate.type.EntityType.resolve(EntityType.java:412) 
at org.hibernate.type.ComponentType.resolve(ComponentType.java:607) 
at org.hibernate.type.ComponentType.nullSafeGet(ComponentType.java:298) 
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1121) 
+0

が見えます。あなたはあなたの休止状態のオブジェクト定義を投稿できますか? – THelper

答えて

0

ソリューション

私のためのソリューションは、すべての双方向関連のためCascadeType.REFRESH(またはCascadeType.ALL)を使用することはなかったです。

@OneToMany(mappedBy = "hospital", cascade = CascadeType.ALL) 

同じことが起こった:私は子供がまた例えば、この親に@ManyToOne関係を持つ、@OneToManyの親側のcascade = CascadeType.ALLを使用したときの背景

は、私は同じ問題を持っていました私がちょうどcascade = CascadeType.REFRESHを使用したとき。あなたのオブジェクトのいずれかで循環参照を持っているように、親も子をリフレッシュした親を、リフレッシュした子を、リフレッシュするリフレッシュ

...