2012-01-19 30 views
1

私は5行のデータベーステーブルを持っています。 EclipselinkにはキャッシュがありませんStackOverflowError

初めて

は私がにStackOverflowErrorが、私は行

em.find(clazz, 1); 
em.find(clazz, 2); 
em.find(clazz, 3); 
em.find(clazz, 4); 
em.find(clazz, 5); 

そして、選択のそれぞれに単一の選択を行う場合はどのようにこれまで

em.createQuery("SELECT e FROM " + clazz.getSimpleName() + " e"); 

すべてが完璧に動作し得るすべての選択を行います。私はこれがまだキャッシュにないレコードと関係があると思いますか?

のフルスタックトレースは、ここでは長すぎるのjava.langでトップ

org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)で

java.lang.StackOverflowErrorを です.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(不明なソース) at com.mysql.jdbc.Util.handleNewInstance(Util.java:427) at com.mysql.jdbc.PreparedStatement.getInstance (PreparedStatement.java:872) com.mysql.jdbc.ConnectionImpl.clientPrepareStatement(ConnectionImpl.java:1498) at com.mysql.jdbc.Connection (DatabaseAccessor.java:1401)。 org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatementでorg.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement(DatabaseAccessor.java:1350) (DatabaseCall.java:652)org.eclipseで で。プロパティ。 ServerSession.executeCall(ServerSession.java:529)012 org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCallでorg.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:206) (DatasourceCallQueryMechanism.java:192)org.eclipseで で。 persistence.internal.queries.DatasourceCallQueryMechanism.selectOneRow(DatasourceCallQueryMechanism.java:664)org.eclipse.persistence.internal.queries.ExpressionQueryMechanism.selectOneRowFromTable(ExpressionQueryMechanism.java:2582)で org.eclipse.persistence.internal.queriesで 。 ExpressionQueryMechanism.selectOneRow(ExpressionQueryMechanism.java:2553) at org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:439) at org.eclipse.persistence.queries.ObjectLevelRea dQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1076) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:740) at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1036) at org.eclipse.persistence.queries.ReadObjectQuery.execute(ReadObjectQuery.java:407) at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2392) at org.eclipse.persistence。 (AbstractSession.java:1273) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1273) at org.eclipse.persistence.internal.indirection.NoIndirectionPolicy。 valueFromQuery(NoIndirectionPolicy.java:309) at org.eclipse.persistence.mappings。org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRowでorg.eclipse.persistence.mappings.OneToOneMapping.valueFromRowInternal(OneToOneMapping.java:1623) でForeignReferenceMapping.valueFromRowInternal(ForeignReferenceMapping.java:1850) (ForeignReferenceMapping.java:1739) org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildAttributesIntoObjectでorg.eclipse.persistence.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1283) (ObjectBuilder.java:342)org.eclipse.persistenceで で。 internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:717) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:504) at org.eclipse.persistence.internal.descriptors.ObjectBuilder。 buildObjec T(ObjectBuilder.java:454)org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:723)で org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:448)で でorg.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1076) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:740) at org.eclipse.persistence.queries.ObjectLevelReadQuery。 execute(ObjectLevelReadQuery.java:1036) at org.eclipse.persistence.queries.ReadObjectQuery.execute(ReadObjectQuery.java:407) at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2392) at org.eclipse.persistence .internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1291) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1273) at org.eclipse.persistence.internal.indirection.NoIndirectionPolicy org.eclipse.persistence.mappings.OneToOneMapping.valueFromRowInternal(OneToOneMapping.java:1623)でorg.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRowInternal(ForeignReferenceMapping.java:1850) で.valueFromQuery(NoIndirectionPolicy.java:309) org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRow(ForeignReferenceMapping.java:1739) at org.eclipse.persistence.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1283) at org.eclipse.persistence.internal.descriptors .ObjectB ubuilder.buildAttributesIntoObject(ObjectBuilder.java:342) (org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:717) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder。ジャワ:ORGでorg.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:723) でorg.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:454) における504) 。 eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:448) でのorg.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1076) at org.eclipse.persistence.queries.DatabaseQuery.execute DatabaseQuery.java:740) at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1036) at org.eclipse.persistence.queries.ReadObjectQuery.execute(ReadObjectQuery.java:407) at org.eclipse.persistence.internal。 (AbstractSession.java:1291) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1291) at sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2392) org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRowInternal(ForeignReferenceMapping.java:1850) でorg.eclipse.persistence.internal.indirection.NoIndirectionPolicy.valueFromQuery(NoIndirectionPolicy.java:309) でAbstractSession.java:1273) でorg.eclipse.persistence.mappings。org.eclipse.persistence.mappings.DatabaseMapping.readFromRowIntoObjectでOneToOneMapping.valueFromRowInternal org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRow(ForeignReferenceMapping.java:1739)で(OneToOneMapping.java:1623) (DatabaseMapping.java:1283) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:342) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:717) at org.eclipse。プロパティ。 buildObject(ObjectLevelReadQuery.j AVA:723)org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery(ReadObjectQuery.java:448で )org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1076で )org.eclipseで 。 (DatabaseQuery.java:740) at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1036) at org.eclipse.persistence.queries.ReadObjectQuery.execute(ReadObjectQuery。 java:407) at org.eclipse.persistence.internal.sessions.AternalExecuteQuery(AbstractSession.java:2392) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1291) at org.eclipse.persistence.internal.sessiプロパティ値の型。 Javaの:1850) org.eclipse.persistence.mappings.OneToOneMapping.valueFromRowInternal(OneToOneMapping.java:1623) でorg.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRow(ForeignReferenceMapping.java:1739) でorg.eclipseで。 persistence.mappings.DatabaseMapping.readFromRowIntoObject(DatabaseMapping.java:1283) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildAttributesIntoObject(ObjectBuilder.java:342) at org.eclipse.persistence.internal.descriptors.ObjectBuild (ObjectBuilder.java:504) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:504) にあるorg.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectのオブジェクトを返します。 Javaの:org.eclipseでorg.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQueryでorg.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:723) (ReadObjectQuery.java:448) で454) 。 org.eclipse.persistence.queries.DatabaseQuery.executeでpersistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1076) (DatabaseQuery.java:740)

答えて

5

私はあなたがNONEにあなたのキャッシュタイプを設定していると仮定し、ハLAZYを使用しないリレーションシップサイクル。

キャッシュタイプをNONEに設定しないでください。共有キャッシュを無効にする方法ではありません。非常に特別な場合に限りキャッシュタイプをNONEに設定します。共有キャッシュの使用を無効にするには

<property name="eclipselink.cache.shared.default" value="false"/> 

を参照してください、 http://wiki.eclipse.org/EclipseLink/FAQ/How_to_disable_the_shared_cache%3F

+1

素晴らしいです!私は 'org.eclipse.persistence.exceptions.QueryException'を取得していて、この勧告に従って、それを修正しました。私はドキュメントに「CacheTypeを 'None'に設定してキャッシュを無効にしないでください。これはオブジェクトIDの問題を引き起こす可能性があります」と述べています。 -cache-mode> '、そうですか? –

関連する問題