List slist=getHibernateTemplate().find("from SysColpriv s where s.sysCol="+cid); 
配置文件没问题这样就好

解决方案 »

  1.   

    你是这行报空指针就不是sql的问题,而是你的getHibernateTemplate()为null。
      

  2.   

    把show_sql设置成true,然后把输出的SQL放到数据库中执行一遍,看看有什么结果
      

  3.   

    不对
    应该改为:
    List slist=getHibernateTemplate().find("from SysColpriv s where s.sysCol="+cid); 
      

  4.   

    Hibernate: select syscolpriv0_.COLPRIV_ID as COLPRIV1_1_, syscolpriv0_.COL_ID as COL2_1_, syscolpriv0_.COLPRIV_STR as COLPRIV3_1_, syscolpriv0_.COLPRIV_NOTE as COLPRIV4_1_ from SYS_COLPRIV syscolpriv0_ where syscolpriv0_.COL_ID=10
    2008-5-5 14:08:26 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.lang.NullPointerException
    报这个错
      

  5.   

    syscoL是一个对象了..不能直接等于了
      

  6.   

    这个COLPRIV表的中的SYSCOL字段是从COL表中获取的
      

  7.   

    估计空指针不是报在那条语句上的吧?
    SQL语句没错啊
      

  8.   

    你把tomcat下work目录下编译过的文件都删掉试试看
      

  9.   

    public List syscolprivs(String cid) {
    System.out.println("dlist");
    long idd= Long.parseLong(cid);
    Session session=getSession();
                  System.out.println(" 来查找了");
            List slist=getHibernateTemplate().find("from SysColpriv s where s.sysCol.colId="+cid);
    System.out.println("完必");
    session.close();

    return slist;看下面的报错
      dlist
     来查找了
    Hibernate: select syscolpriv0_.COLPRIV_ID as COLPRIV1_1_, syscolpriv0_.COL_ID as COL2_1_, syscolpriv0_.COLPRIV_STR as COLPRIV3_1_, syscolpriv0_.COLPRIV_NOTE as COLPRIV4_1_ from SYS_COLPRIV syscolpriv0_ where syscolpriv0_.COL_ID=1001
    2008-5-5 15:43:37 org.apache.catalina.core.StandardWrapperValve invoke
    严重: 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
      

  10.   

    lz检查一下数据库的数据是不是有空项检查一下程序那个对象有可能为null 排除一下
      

  11.   

    getHibernateTemplate()看看是不是null打印出来的sql在数据库看看能不能执行还就是hql中对应的类pojo的大小写一定要相同,还有就是pojo有没有包含进来
      

  12.   

    lz用的是:org.springframework.orm.hibernate3.support.HibernateDaoSupport?
    还是:org.springframework.orm.hibernate.support.HibernateDaoSupport?如果是前者的话,换为后者试一试
      

  13.   

    getHibernateTemplate()是为空
    包没有导过来会报错..
      

  14.   

    你的<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">是不是少配置了<property name="dataSource" ref="dataSource"/>
      

  15.   

    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    我用的是这个..不能去掉3..去掉就错了
      

  16.   

    <?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="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"
    value="oracle.jdbc.driver.OracleDriver">
    </property>
    <property name="url"
    value="jdbc:oracle:thin:@124.205.130.13:1521:ora9i">
    </property>
    <property name="username" value="test"></property>
    <property name="password" value="test"></property>
    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.Oracle9Dialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/lifedu/pojo/SysUser.hbm.xml</value>
    <value>com/lifedu/pojo/SysColpriv.hbm.xml</value>
    <value>com/lifedu/pojo/SysUsercolpriv.hbm.xml</value>
    <value>com/lifedu/pojo/SysUserrole.hbm.xml</value>
    <value>com/lifedu/pojo/SysCol.hbm.xml</value>
    <value>com/lifedu/pojo/SysLog.hbm.xml</value></list>
    </property></bean>
    <bean id="userDao" class="com.lifedu.dao.impl.UserDaoImpl"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="userManager"
    class="com.lifedu.service.impl.UserManagerImpl" abstract="false"
    lazy-init="default" autowire="default" dependency-check="default">
    <property name="userDao">
    <ref bean="userDao"/>
    </property>
    </bean>


    <bean id="columnDao" class="com.lifedu.dao.impl.ColumnDaoImpl"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>

    <bean id="columnManager"
    class="com.lifedu.service.impl.ColumnManagerImpl" abstract="false"
    lazy-init="default" autowire="default" dependency-check="default">
    <property name="columnDao">
    <ref bean="columnDao" />
    </property>
    </bean>
    <bean id="popedomDao" class="com.lifedu.dao.impl.PopedomDaoImpl"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean id="popedomManager"
    class="com.lifedu.service.impl.PopedomManagerImpl" abstract="false"
    lazy-init="default" autowire="default" dependency-check="default">
    <property name="popedomDao">
    <ref bean="popedomDao" />
    </property>
    </bean></beans>我的SPRING配置文件
      

  17.   

    我想你的代码是没有问题的,问题应该在你的xml配置上
    把”org.springframework.orm.hibernate.HibernateTransactionManager“改为”org.springframework.orm.hibernate3.HibernateTransactionManager“,
    “org.springframework.orm.hibernate.LocalSessionFactoryBean”改为
    “org.springframework.orm.hibernate3.LocalSessionFactoryBean”
      

  18.   

    现在不是很有时间给你写..看看我以前写的多表查询吧/**
     * Query OrderHistory Info for every page
     * 
     * @param startPage
     *            query database's start location
     * @param row
     *            the number query database for every time
     * @return list if query success and database have relatively data this list
     *         isn't null esle this list is null
     * @throws HibernateException
     *             if your operation have Exception
     * @exception ManagerException
     *                if your database operation have Exception
     */
    public List queryOrderHistoryByPage(long startTime, long endTime,
    int startPage, int row) throws HibernateException {
    String method = "queryOrderHistoryByPage";
    Session session = null; List list = null; try { String sql = "SELECT  o.*  FROM order_history AS o JOIN meal AS m ON o.muid = m.muid "
    + "JOIN restaurant AS r on r.ruid = m.ruid WHERE o.expired = "
    + Constant.ORDERHISTORY_EXPIRED
    + " and o.created_date >= "
    + startTime
    + " and o.created_date <= "
    + endTime
    + " ORDER BY r.ruid ASC"; session = HibernateUtil.currentSession();
    SQLQuery sq = session.createSQLQuery(sql).addEntity(
    OrderHistory.class);
    sq.setMaxResults(row);
    sq.setFirstResult(startPage); list = sq.list(); this.debug("", method, Constant.LOG_QUERY_SUCCESS);
    } catch (HibernateException e) {
    error("", method, "hibernate exception", e);
    throw e;
    }
    return list;
    }
      

  19.   

    hibernate + spring这种框架虽然很方便,但是如果配置上出了一点点小问题都会导致程序无法运行。其实解决这种问题是有一定的思路,首先你要检查一下配置文件中配置的是否正确,由于是1对N的关系,配置文件中有没有把这个配置正确。其次既然报出了空指针的问题,那么需要具体定位到是什么报了空指针,就上大家讲的一样,你要明确究竟是什么报了空指针的错误。针对你的问题,如果是getHibernateTemplate()包的空指针的错误,多半是由于spring中关于hibernate包的问题,其实你可以参考官网上下的spring的压缩包,里面都有例子,配置文件也都是写好的。如果是hql错误,你要确认一下SysColpriv.hbm.xml和SysCol.hbm.xml有没有配置正确,其实这种牵涉到多个表的查询你完全可以使用自然sql,这种sql我们更加熟悉,用起来更加方便,而且hibernte3中已经可以使用自然的sql来执行了,楼主为什么不试一下呢
      

  20.   

    一个表没有主键..在IDE生成二个类..要怎么写语句向这个表中添加记录
      

  21.   

    vList slist=getHibernateTemplate().find("from SysColpriv s where s.sysCol="+cid); 
      

  22.   

    应该就是你的jdbctemplate报的空指针异常,你应该用log4j看看你的日志文件,肯定有问题
      

  23.   

    不知道是不是你的colId是字符串的原因 在hql查询语句中要用'   '引起来吧
      

  24.   

    应该是HQL里面“s.sysCol.colId”的问题吧
      

  25.   

    你那样写hql "s.sysCol.colId"不对你把程序改为这样看看啊:
    public Object  findSingle(String hql) {//from tablename
    Object  obj=  getSession().createQuery(hql).uniqueResult();
    return obj;
    }Object obj=getHibernateTemplate().findSingle("from SysCol s where s.colId="+cid); 
    SysCol  col = (SysCol) obj;
    List slist = col.getSysColprivs().list();