//根据商品Id查找该商品的所有竞价单
public List<Buygoodinfo> findBuyGoodinfoByGoodId(int id){
String sql = "from Buygoodinfo where goodinfo.id="+id;
System.out.println(sql);
System.err.println(getHibernateTemplate());
return getHibernateTemplate().find(sql);
}其中sql在HQL编辑器里面可以查出来数据,证明sql没写错
getHibernateTemplate()也可以打印出来 
但是在执行return getHibernateTemplate().find(sql);这句的时候总是报
/****************************************错误信息********************************************
重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
at org.hibernate.type.EntityType.resolve(EntityType.java:303)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2145)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:849)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:832)
at com.xawl.paimai.dao.BuygoodinfoDAO.findBuyGoodinfoByGoodId(BuygoodinfoDAO.java:174)
at com.xawl.paimai.biz.impl.SellUserBizImpl.findBuyGoodinfoByGoodId(SellUserBizImpl.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy4.findBuyGoodinfoByGoodId(Unknown Source)
at com.xawl.paimai.action.LoginAction.findBuygoodinfoBySellId(LoginAction.java:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
</beans>

解决方案 »

  1.   

    补充:
    /*************************spring.xml的配置如下******************************************<?xml version="1.0" encoding="UTF-8"?>
    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation"
    value="classpath:hibernate.cfg.xml">
    </property>
    </bean>


    <bean id="goodsBizTarget" class="com.xawl.paimai.biz.impl.GoodsBizImpl">
    <property name="goodinfoDAO" ref="GoodinfoDAO"/>
    </bean>

    <bean id="buyUserBizTarget" class="com.xawl.paimai.biz.impl.BuyUserBizImpl">
    <property name="buyuserDAO" ref="BuyuserDAO"></property>
    <property name="goodinfoDAO" ref="GoodinfoDAO"></property>
    <property name="buygoodinfoDAO" ref="BuygoodinfoDAO"></property>
    </bean>

    <bean id="buyGoodBizTarget" class="com.xawl.paimai.biz.impl.BuyGoodBizImpl">
    <property name="buygoodinfoDAO" ref="BuygoodinfoDAO"></property>
    </bean>
    <bean id="sellUserTarget" class="com.xawl.paimai.biz.impl.SellUserBizImpl">
    <property name="selluserDAO" ref="SelluserDAO"></property>
    <property name="goodinfoDAO" ref="GoodinfoDAO"></property>
    <property name="buygoodinfoDAO" ref="BuygoodinfoDAO"></property>
    </bean>


    <!-- 添加事务 -->
    <bean id="tx" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!-- 添加代理工厂 -->
    <bean id="BizTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
             <property name="transactionManager" ref="tx"/>
     <property name="transactionAttributes">
     <props>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
    </bean>
     

      <bean id="goodsBiz" parent="BizTemplate">
      <property name="target" ref="goodsBizTarget" /> 
    <!--  代理谁? 
      --> 
        </bean>
        <bean id="buyUserBiz" parent="BizTemplate">
         <property name="target" ref="buyUserBizTarget"></property>
        </bean>

    <bean id="buyGoodBiz" parent="BizTemplate">
    <property name="target" ref="buyGoodBizTarget"></property>
    </bean>

    <bean id="sellUser" parent="BizTemplate">
    <property name="target" ref="sellUserTarget"></property>
    </bean>

    <bean id="BuygoodinfoDAO" class="com.xawl.paimai.dao.BuygoodinfoDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="BuyuserDAO" class="com.xawl.paimai.dao.BuyuserDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="LeavewordDAO" class="com.xawl.paimai.dao.LeavewordDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="AppraiseDAO" class="com.xawl.paimai.dao.AppraiseDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="GoodinfoDAO" class="com.xawl.paimai.dao.GoodinfoDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="SelluserDAO" class="com.xawl.paimai.dao.SelluserDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>


    <!--  action 
      --> 
      <bean name="/addGood" class="com.xawl.paimai.action.AddGoodAction">
         <property name="goodsBiz" ref="goodsBiz" /> 
      </bean>
      <bean name="/buyUser" class="com.xawl.paimai.action.BuyUserAction">
       <property name="buyUserBiz" ref="buyUserBiz"></property>
       <property name="buyGoodBiz" ref="buyGoodBiz"></property>
      </bean>
      <bean name="/login" class="com.xawl.paimai.action.LoginAction">
       <property name="buyUserBiz" ref="buyUserBiz"></property>
       <property name="sellUser" ref="sellUser"></property>
      </bean>

    </beans>
      

  2.   

    java.lang.NullPointerException跑过debug?
      

  3.   

    at com.xawl.paimai.dao.BuygoodinfoDAO.findBuyGoodinfoByGoodId(BuygoodinfoDAO.java:174)
    空指针是这一行造成的。
      

  4.   


    跑过debug了,每次跑到return getHibernateTemplate().find(sql);这句的时候就会报空指针,不知道为什么 ,其他的都好着呢,会不会是惰性加载的问题?数据源:
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration> <session-factory>
    <property name="connection.username">root</property>
    <property name="connection.url">
    jdbc:mysql://127.0.0.1:3306/paimai3
    </property>
    <property name="dialect">
    org.hibernate.dialect.MySQLDialect
    </property>
    <property name="connection.useUnicode">true</property>
    <property name="connection.characterEncoding">UTF-8</property>
    <property name="myeclipse.connection.profile">mysql</property>
    <property name="connection.password">root</property>
    <property name="connection.driver_class">
    com.mysql.jdbc.Driver
    </property>
    <mapping resource="com/xawl/paimai/Buygoodinfo.hbm.xml" />
    <mapping resource="com/xawl/paimai/Buyuser.hbm.xml" />
    <mapping resource="com/xawl/paimai/Leaveword.hbm.xml" />
    <mapping resource="com/xawl/paimai/Appraise.hbm.xml" />
    <mapping resource="com/xawl/paimai/Goodinfo.hbm.xml" />
    <mapping resource="com/xawl/paimai/Selluser.hbm.xml" /> </session-factory></hibernate-configuration>
      

  5.   

    String sql = "from Buygoodinfo where goodinfo.id="+id;
    goodinfo.id 这个字段是什么意思
    既然查找的是Buygoodinfo 为什么查找的条件是goodinfo.id
    goodinfo 这个字段是哪里来的。
      

  6.   

    at com.xawl.paimai.dao.BuygoodinfoDAO.findBuyGoodinfoByGoodId(BuygoodinfoDAO.java:174)
    看看这里,debug调试一下。
      

  7.   

    sql 语句写错了吧。
    String sql = "from Buygoodinfo as t where t.id="+id;
      

  8.   

    断点,debug模式调试一下,看哪一步报的错,一般这种问题调试一下就能解决的!
      

  9.   

    #6楼:
    数据库中的表关系是   多个订单BuyGoodinfo可以同时引用一个  商品Goodinfosql语句的意思是通过查找出这个商品的ID找到所有对该商品下的订单sql语句没有错误,那个我在HQL编辑器里面已经测试过了 还有就是我通过debug调试出来,可以很肯定的告诉大家就是return getHibernateTemplate().find(sql);这句话报的空指针错误,但是我不知道为什么,因为在其它几个DAO里都好着呢 ,只有在查询BuyGoodinfo这个表时会出现这个错误
      

  10.   

    还有就是这个sql语句不是在数据库中执行的语句,这是在hibernate中执行的,测试过了,没问题 。
      

  11.   

    String sql = "from Buygoodinfo as t where t.id=:id";
    return getHibernateTemplate().find(sql,参数);
    不是应该这样写吗