我在我的项目中使用eclipseLink 2.5.2,有时会遇到以下异常:
java.lang.NullPointerException
at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:431)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1168)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1127)
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:403)
at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:3214)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1786)
at org.eclipse.persistence.mappings.CollectionMapping.executeBatchQuery(CollectionMapping.java:974)
at org.eclipse.persistence.mappings.ForeignReferenceMapping.extractResultFromBatchQuery(ForeignReferenceMapping.java:643)
at org.eclipse.persistence.mappings.CollectionMapping.extractResultFromBatchQuery(CollectionMapping.java:955)
at org.eclipse.persistence.internal.indirection.BatchValueHolder.instantiate(BatchValueHolder.java:58)
at org.eclipse.persistence.internal.indirection.QueryBasedValueHolder.instantiate(QueryBasedValueHolder.java:116)
at org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:89)
at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiateImpl(UnitOfWorkValueHolder.java:173)
at org.eclipse.persistence.internal.indirection.UnitOfWorkValueHolder.instantiate(UnitOfWorkValueHolder.java:234)
at org.eclipse.persistence.internal.indirection.DatabaseValueHolder.getValue(DatabaseValueHolder.java:89)
at org.eclipse.persistence.indirection.IndirectSet.buildDelegate(IndirectSet.java:211)
at org.eclipse.persistence.indirection.IndirectSet.getDelegate(IndirectSet.java:375)
at org.eclipse.persistence.indirection.IndirectSet.contains(IndirectSet.java:349)
at com.services.CategoryServiceImpl.categoryContainsCareType(CategoryServiceImpl.java:305)
at
这是定义了careType和category之间关系的部分,并且在调用category.getCareTypes()
的地方发生了异常:
@ManyToMany(targetEntity=CareTypeJPAImpl.class) @JoinTable(
name="J_CARE_TYPE_CATEGORY",
joinColumns={@JoinColumn(name="CATEGORY_ID", referencedColumnName="ID")},
inverseJoinColumns={@JoinColumn(name="CARE_TYPE_ID", referencedColumnName="ID")})
@org.eclipse.persistence.annotations.BatchFetch(value=org.eclipse.persistence.annotations.BatchFetchType.JOIN,size=990)
private Set<CareType> careTypes = new HashSet<CareType>();
我看了source code但不太了解