나는 슬픔을 일으키는 org.hibernate.envers.entities.mapper.relation.lazy.proxy.ListProxy
의 인스턴스를 가지고 있습니다 : 프로그래밍 방식으로 액세스하려고 할 때마다 널 포인터 예외 (즉, list.size()
호출)가 발생하지만 처음 검사 할 때 Eclipse의 변수 속성을 사용하는 객체 나는 Hibernate가 SQL 문을 생성하고 목록이 동적으로 변경되는 것을 본다. 모든 것이 작동합니다. 프로그래밍 방식으로 동일한 작업을 수행하려면 어떻게해야합니까? 내가 시도했습니다 list.toString()
하지만 도움이되지 않는 것.이클립스는 디버깅하는 동안 변수를 검사 할 때 무엇을합니까
업데이트 1
이 도움이된다면이 몰라 그러나 나는 처음에는 화면에 표시되는 목록 인스턴스를 클릭하면 :
다음com.sun.jdi.InvocationException occurred invoking method.
데이터베이스 쿼리가 실행되고 다시 클릭하면 나는 정확한 .toString()
결과를 얻는다.
업데이트 여기에 2
내가 얻을 원의 예외 (I 디버그 모드에서 요소를 검사하지 않는 경우)입니다. (임시 해킹 사실 이상)
java.lang.NullPointerException
at org.hibernate.envers.query.impl.EntitiesAtRevisionQuery.list(EntitiesAtRevisionQuery.java:72)
at org.hibernate.envers.query.impl.AbstractAuditQuery.getSingleResult(AbstractAuditQuery.java:104)
at org.hibernate.envers.entities.mapper.relation.OneToOneNotOwningMapper.mapToEntityFromMap(OneToOneNotOwningMapper.java:74)
at org.hibernate.envers.entities.mapper.MultiPropertyMapper.mapToEntityFromMap(MultiPropertyMapper.java:118)
at org.hibernate.envers.entities.EntityInstantiator.createInstanceFromVersionsEntity(EntityInstantiator.java:93)
at org.hibernate.envers.entities.mapper.relation.component.MiddleRelatedComponentMapper.mapToObjectFromFullMap(MiddleRelatedComponentMapper.java:44)
at org.hibernate.envers.entities.mapper.relation.lazy.initializor.ListCollectionInitializor.addToCollection(ListCollectionInitializor.java:67)
at org.hibernate.envers.entities.mapper.relation.lazy.initializor.ListCollectionInitializor.addToCollection(ListCollectionInitializor.java:39)
at org.hibernate.envers.entities.mapper.relation.lazy.initializor.AbstractCollectionInitializor.initialize(AbstractCollectionInitializor.java:67)
at org.hibernate.envers.entities.mapper.relation.lazy.proxy.CollectionProxy.checkInit(CollectionProxy.java:50)
at org.hibernate.envers.entities.mapper.relation.lazy.proxy.CollectionProxy.size(CollectionProxy.java:55)
at <MY CODE HERE, which checks list.size()>
최종 솔루션
boolean worked = false;
while (!worked) {
try {
if(list.size() == 1) {
// do stuff
}
worked = true;
} catch (Exception e) {
// TODO: exception must be accessed or the loop will be infinite
e.getStackTrace();
}
}
내 중단 점 세트가있는 곳에서 오류가 발생 (예외가 발생 함) 한 코드가 올바르게 표시되므로 세션이 여전히 유효합니다. 차이점은 내가 다음 줄로 넘어가 버리면 그것은 날려 버린다.하지만 이클립스로 검사하면 다음 줄로 넘어 가서 작동한다. –
나는 이클립스 디버거가 fileds에 액세스 할 때 오류가 발생한다고 생각한다. 계속 진행되는 이클립스에 의해 단순히 채워진다는 것이다. eclipse로 디버깅/스텝 오버를하지 않을 때 정확한 오류는 무엇입니까? –
좋은 점, 그 생각하지 않았다 ... 나는 원래의 질문에 예외를 첨부합니다. –