前言:
本人最近一直在研究ssh框架,在ssh整合的过程中难免会遇到各种各样的问题,因此,本人打算写下一系列博客来记录ssh整合过程中锁收获到的点点滴滴,同时,希望本系列博客能够帮助到在java web开发中遇到ssh相关问题的朋友。
本项目整体采用的是基于Annotation的ssh整合开发
1.开发环境:tomcat 7.0 jdk 1.7 mysql 5.1
2.开发工具:myeclipse 10.0
3.ssh框架版本:struts2 2.1.6 + hibernate 3.0 + spring 2.5
初次将spring和hibernate整合时,遇到了如下的查询异常:
org.springframework.orm.hibernate3.HibernateQueryException: user is not mapped
很显然,根据异常提示可知:user没有被映射,异常代码如下:super.getHibernateTemplate().find("from user");
但是根据hql语句from user,检查不出来hql语句的错误,于是,在网上查找了很多资料,最终得以解决。
解决办法如下:
将hql语句改为from User就可以了,原因是在映射时user不是指数据库中的表名称,而是entity实体类的名称,所以应该和实体类User的名称一致为User
注:在hql语句中大小写敏感,而在mysql数据库中不区分大小写,这点一定要注意!!!
产生此异常的原因还可能有:
1.hbm.xml 没有在applicationContext.xml中配置如下:
<property name="packagesToScan">
<list>
<value></value>
</list>
</property>
2.find() 方法中的类名未写全
例如:
原来是:super.getHibernateTemplate().find("from user");
应该为:super.getHibernateTemplate().find("from com.model.User");