2012-01-19 3 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 (알 수없는 소스) at java.lang.ClassLoader.loadClassInternal (알 수없는 소스) at com.mysql.jdbc.Util.handleNewInstance (Util.java:427) at com.mysql.jdbc.PreparedStatement.getInstance (PreparedStatement.java:872) at com.mysql.jdbc.ConnectionImpl.clientPrepareStatement (ConnectionImpl.java:1498) at com.mysql.jdbc.Connection impl.prepareStatement (ConnectionImpl.java:4270) at com.mysql.jdbc.ConnectionImpl.prepareStatement (ConnectionImpl.java:4169) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.prepareStatement (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에서 에서 . org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall (DatabaseAccessor.java:576) 에서 persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall at org.eclipse.persistence.sessions.server. 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에서 에서 3,516,. 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 (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. valueFromQuery (NoIndirectionPolicy.java:309)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. org.eclipse.persistence.queries.ReadObjectQuery.execute (ReadObjectQuery.java:407) 에서 을 실행하십시오. 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.DatabaseMapping.readFromRowIntoObject (DatabaseMapping.java:1283)에서 org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRow (ForeignReferenceMapping.java:1739) 에서 org.eclipse.persistence.internal.descriptors에서 .ObjectB uilder.buildAttributesIntoObject (ObjectBuilder.java:342) at 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.buildObject (ObjectBuilder.java:454) at org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject (ObjectLevelReadQuery.java:723) at org. org.eclipse.persistence.queries.DatabaseQuery.execute에서 org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery (ObjectLevelReadQuery.java:1076) 에서 eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery (ReadObjectQuery.java:448) (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 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. persistence.internal.descriptors.ObjectBuilder.buildObject (ObjectBuilder.java:504) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject (ObjectBuilder.java:454) at org.eclipse.persistence.queries.ObjectLevelReadQuery. buildObject (ObjectLevelReadQuery.j 아바 : 723) org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery (ReadObjectQuery.java:448에서 ) org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery (ObjectLevelReadQuery.java:1076에서 ) org.eclipse에서 . (DatabaseQuery.java:740) 에서 org.eclipse.persistence.queries.ObjectLevelReadQuery.execute (ObjectLevelReadQuery.java:1036) 에서 org.eclipse.persistence.queries.ReadObjectQuery.execute (ReadObjectQuery. java : 407) at org.eclipse.persistence.internal.sessions.Aternal AbstractExecuteQuery (AbstractSession.java:2392) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery (AbstractSession.java:1291) at org.eclipse.persistence.internal.sessi ons.AbstractSession.executeQuery (AbstractSession.java:1273) org.eclipse.persistence.mappings.ForeignReferenceMapping.valueFromRowInternal (ForeignReferenceMapping에서 org.eclipse.persistence.internal.indirection.NoIndirectionPolicy.valueFromQuery (NoIndirectionPolicy.java:309) 에서 . 자바 : 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 er.buildObject (ObjectBuilder.java:717) org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject에서 org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject (ObjectBuilder.java:504) 에서 (ObjectBuilder. 자바 : org.eclipse에서 org.eclipse.persistence.queries.ReadObjectQuery.executeObjectLevelReadQuery (ReadObjectQuery.java:448) 에서 org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject (ObjectLevelReadQuery.java:723) 에서 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 문제를 일으킬 수 있습니다."_ 이것이 NONE', 맞습니까? –