• Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Student is not mapped


    1、错误描述

    org.hibernate.hql.internal.ast.QuerySyntaxException: Student is not mapped [from Student ]
    	at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:96)
    	at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
    	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
    	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
    	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:131)
    	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93)
    	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)
    	at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
    	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
    	at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)
    	at com.you.ssh.dao.impl.StudentDaoImpl.findAll(StudentDaoImpl.java:74)
    	at com.you.ssh.dao.impl.StudentDaoImpl$$FastClassBySpringCGLIB$$c4e653c7.invoke(<generated>)
    	at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    	at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
    	at com.you.ssh.dao.impl.StudentDaoImpl$$EnhancerBySpringCGLIB$$74f480f8.findAll(<generated>)
    	at com.you.ssh.test.dao.StudentDaoTest.testFindAll(StudentDaoTest.java:53)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
    	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
    	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
    	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
    	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Student is not mapped
    	at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:189)
    	at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:109)
    	at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:95)
    	at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:338)
    	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3678)
    	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)
    	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:708)
    	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)
    	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
    	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
    	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
    	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
    	... 48 more

    2、错误原因

         Hibernate HQL查询有实体封装类,但是没有对应的映射文件

    /**
     *
     * 项目名称:SSH
     * 项目包名:com.you.ssh.dao.impl
     * 文件名称:StudentDaoImpl.java
     * 类型名称:StudentDaoImpl
     * 创建作者:游海东
     * 创建日期:2017-2-21
     * 创建时间:下午12:02:56
     * 版权所有:
     * 项目版本:V1.0
     */
    package com.you.ssh.dao.impl;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.you.ssh.dao.StudentDao;
    import com.you.ssh.model.Student;
    
    /**
     * 学生信息
     * 文件名称:StudentDaoImpl.java
     * 文件类型:StudentDaoImpl
     * 文件包名:com.you.ssh.dao.impl
     * 创建作者:游海东
     * 创建日期:2017-2-21
     * 创建时间:下午12:02:56
     */
    @Repository("studentDao")
    @Transactional
    public class StudentDaoImpl implements StudentDao 
    {
    	@Autowired
    	private SessionFactory sessionFactory;
    	
    	/**
    	 * 
    	 * 方法描述:
    	 * 创建作者:游海东
    	 * 创建日期:2017-2-21
    	 * 创建时间:下午2:09:50
    	 * 方法名称:getCurrentSession
    	 * 方法类型:StudentDaoImpl
    	 * 返回类型:Session
    	 * @return
    	 */
    	private Session getCurrentSession() 
    	{
    		return this.sessionFactory.getCurrentSession();
    	}
    	
    	/**
    	 * 功能描述:
    	 * 方法名称:findAll
    	 * 创建作者:游海东
    	 * 创建日期:2017-2-21
    	 * 创建时间:下午2:01:04
    	 * @return
    	 */
    	@SuppressWarnings({ "unchecked"})
    	@Override
    	public List<Student> findAll()
    	{
    		List<Student> list = new ArrayList<Student>();
    		StringBuilder sql = new StringBuilder();
    		sql.append("from Student ");
    		list = this.getCurrentSession().createQuery(sql.toString()).list();
    		
    		return list;
    	}
    
    }
    

    3、解决办法

     (1)新建一个包map,在map包中创建Student.hbm.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.you.ssh.model.Student" table="t_student_info" catalog="student">
            <id name="id" type="java.lang.Integer">
                <column name="id" />
                <generator class="identity" />
            </id>
            <property name="stuNo" type="java.lang.Integer">
                <column name="stu_no" not-null="true" />
            </property>
            <property name="stuName" type="java.lang.String">
                <column name="stu_name" length="20" not-null="true" />
            </property>
            <property name="stuAge" type="java.lang.Integer">
                <column name="stu_age" />
            </property>
            <property name="stuSex" type="java.lang.String">
                <column name="stu_sex" length="2" />
            </property>
            <property name="stuQq" type="java.lang.String">
                <column name="stu_qq" length="20" />
            </property>
            <property name="stuAddr" type="java.lang.String">
                <column name="stu_addr" length="100" />
            </property>
        </class>
    </hibernate-mapping>
    

    (2)在applicationContext.xml文件里添加

    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="hibernateProperties">
    			<props>
    				<prop key="hibernate.dialect">${hibernate.dialect}</prop>
    				<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
    				<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
    				<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
    			</props>
    		</property>
    		<property name="mappingResources">  
                <list>  
                    <value>com/you/ssh/model/map/Student.hbm.xml</value>
                </list>  
            </property>  
    		<property name="packagesToScan" value="com.you.ssh" />
    	</bean>



  • 相关阅读:
    服务命令Linux安装配置apache
    枚举参考hdu2062Subset sequence
    异常选择struts2文件上传产生Source 'xxxx.tmp' does not exist
    序列插入常用排序算法 总结
    代码nullMerge two sorted linked lists
    下载文件win8mp3下载
    希望判断创造、改变世界的基因
    qemulauncher:图形化的QEMU启动器
    Virtual Memory I: the problem
    HIGHMEM
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313929.html
Copyright © 2020-2023  润新知