Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Query.list()中休眠NullPointerException_Java_Hibernate - Fatal编程技术网

Java 在Query.list()中休眠NullPointerException

Java 在Query.list()中休眠NullPointerException,java,hibernate,Java,Hibernate,它只被复制了一次,并带有以下痕迹 原因:java.lang.NullPointerException 位于org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:119) 位于org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecution

它只被复制了一次,并带有以下痕迹

原因:java.lang.NullPointerException 位于org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:119) 位于org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:65) 位于org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35) 在org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:970)上 位于org.hibernate.impl.SessionImpl.list(SessionImpl.java:1115) 在org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)上

有人知道什么是理性吗


Hibernate版本是3.2.7.GA


我确信,对于每个执行的列表,原因不在当前查询中。为什么当前会话的刷新会下降?是否可以以某种方式阻止它?

以下是生成空指针的方法(源代码:):

private void prepareEntityFlushes(EventSource会话)引发HibernateeException{
调试(“处理刷新时间级联”);
final Map.Entry[]list=IdentityMap.concurrentEntries(session.getPersistenceContext().getEntityEntries());
//由于entryList()是如何在IdentityMap上实现的,因此不会进行并发修改
最终整数大小=list.length;
最终对象anything=getAnything();

对于(int i=0;iSource code missingI无法侵入您的计算机并远程检索您所引用的代码。您能帮我一把吗?stacktrace中引用的类是Hibernate内部,所以为什么您需要侵入任何一台计算机才能检索到我无法理解的代码。使用哪个版本的Hibernate会更好o尽管知道..检查Hibernate设置,如果没有发现问题,请向我们发送代码。Hibernate版本为3.2.7。可能与他的类字段有关。请查看。Maven非常容易查看源代码;-)顺便说一句,Tobb提供的链接是下面的一个版本,您需要的源代码是。不要认为它应该是相关的。谢谢,问题确实在这行EntityEntry=(EntityEntry)me.getValue();但调试在这种情况下没有帮助,因为异常只有一次,我尝试过多次重现这个问题,但一切都正常。如果这不再是问题,我就不会花太多时间试图解决它。可能只是一个随机的侥幸。。
private void prepareEntityFlushes(EventSource session) throws HibernateException {

    log.debug("processing flush-time cascades");

    final Map.Entry[] list = IdentityMap.concurrentEntries( session.getPersistenceContext().getEntityEntries() );
    //safe from concurrent modification because of how entryList() is implemented on IdentityMap
    final int size = list.length;
    final Object anything = getAnything();
    for ( int i=0; i<size; i++ ) {
        Map.Entry me = list[i];
        EntityEntry entry = (EntityEntry) me.getValue(); //nullpointer here!
        Status status = entry.getStatus();
        if ( status == Status.MANAGED || status == Status.SAVING ) {
            cascadeOnFlush( session, entry.getPersister(), me.getKey(), anything );
        }
    }
}