我系统中有1个表,我要写个方法返回表里面的所有记录。但是用spring的gethibernate().load()方法报异常情况如下:
<hibernate-mapping package="com.iso.pojo">
    <class name="TisofileClass" table="tISOfileclass" schema="dbo" catalog="LUCKYGLD" dynamic-insert="true" dynamic-update="true">
        <id name="code" type="java.lang.String">
            <column name="code" length="12" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="50" not-null="true" />
        </property>
        <property name="layer" type="java.lang.Integer">
            <column name="layer" not-null="true" />
        </property>
        <property name="isend" type="java.lang.Byte" >
            <column name="isend" not-null="true" />
        </property>
        <property name="memo" type="java.lang.String">
            <column name="memo" />
        </property>
        <set name="filesInfos" inverse="true" cascade="all" lazy="false">
         <key>
         <column name="fileClass" precision="10" scale="0" />
         </key>
         <one-to-many class="TisofilesInfo"></one-to-many>
        </set>
    </class>
</hibernate-mapping>
public List getAll(){
try{
====请注意这里======================
    Session session = this.getHibernateTemplate()
            .getSessionFactory().openSession();
    List list = session.createQuery("from TisofileClass").list();
用这两行代码没有问题可以返回表里面的所有记录!
================================
//List list = this.getHibernateTemplate().find("com.iso.pojo.TisofileClass");
用上面这行的话就抛出异常!
================================
return list;
}catch(RuntimeException re){
log.error("getting all failed", re);
            throw re;
}
}异常如下:
javax.servlet.ServletException: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: TisofileClass near line 1, column 1 [TisofileClass]; nested exception is org.hibernate.hql.ast.QuerySyntaxError: unexpected token: TisofileClass near line 1, column 1 [TisofileClass]
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.iso.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120)org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: TisofileClass near line 1, column 1 [TisofileClass]; nested exception is org.hibernate.hql.ast.QuerySyntaxError: unexpected token: TisofileClass near line 1, column 1 [TisofileClass]
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:652)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:413)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:371)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:844)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
com.iso.dao.hibernate.fileClassHibernateDAO.getAll(fileClassHibernateDAO.java:94)
com.iso.business.service.facadeManagerImpl.getAllFileClass(facadeManagerImpl.java:108)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
$Proxy2.getAllFileClass(Unknown Source)
com.iso.struts.action.fileInfoAction.execute(fileInfoAction.java:56)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.iso.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120)

解决方案 »

  1.   

    find只能接受query string,不能用类的名字吧。public List find(String queryString)
              throws DataAccessException    Description copied from interface: HibernateOperations
        Execute an HQL query.    Specified by:
            find in interface HibernateOperations    Parameters:
            queryString - a query expressed in Hibernate's query language 
        Returns:
            a List containing the results of the query execution 
        Throws:
            DataAccessException - in case of Hibernate errors
        See Also:
            Session.find(String), Session.createQuery(java.lang.String)
      

  2.   

    回楼上的:
    我是用下面方法的时候出错!
    List list = this.getHibernateTemplate().find("com.iso.pojo.TisofileClass");
      

  3.   

    find方法只接受HQL字符串参数
    不同于load和get方法可以根据OID查询
    find("from TisofileClass");
      

  4.   

    问题解决,犯了一个比较低级的错误,方法名搞错了。
    不过我也奇怪下面的方法是在myEclispse上完成spring和hibernate配置自动生成的,看来它也错了!
    public List findByExample() {
            log.debug("finding Tisofileclass instance by example");
            try {
                List results = getHibernateTemplate()
                        .find("com.iso.pojo.TisofileClass");
                log.debug("find by example successful, result size: " + results.size());
                return results;
                
            } catch (RuntimeException re) {
                log.error("find by example failed", re);
                throw re;
            }
        }