【MarketAnalysis总结】8.0项目中遇到的一些典型的bug及其解决方法

最后,记录一下我在本次项目中遇到的一些典型的bug及其解决方法。

1)  在搭建SSH框架时,由于单独用Hibernate和集成在SSH框架上用还是有区别的,所以刚开始只是做了个简单结合,没有把hibernate的配置融入spring的配置,就出现了“hibernate找不到xxx.cfg.xml”这样的报错。

解决办法:由于SSH框架应该把配置都集成到Ioc容器里,故应该把cfg的配置文件配置在applicationContext.xml中,再把cfg这个独立的xml去掉。

2)  调用DAO层的接口时,没有通过bean的方法调用,直接new了一个对象来调用,报了“NullPointer”的错误。

解决办法:由于没有像图8.1中那样调用DAO层的接口,故而没有对DAO的对象进行依赖注入,故而是个空指针,只要像图中那样调用即可。

图8.1 正确调用DAO层

3)  搭建SSH框架时,报错“Error creating bean withname 'sessionFactory' defined in ServletContext resource[/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed;nested exception is java.io.FileNotFoundException: class path resource[shMVC.entity/] cannot be resolved to URL because it does not exist”。

解决办法:报错的意思是找不到实体的路径,那么问题即出在hibernate的实体映射中,只要把hibernate的映射文件的路径的“.”改成“/”即可。

4)  配置SpringMVC的配置文件时,报错“Line 11 in XML documentfrom ServletContext resource [/WEB-INF/classes/applicationContext.xml] is invalid;nested exception is org.xml.sax.SAXParseException; lineNumber: 11;columnNumber: 69; cvc-elt.1: 找不到元素 'beans' 的声明”。

解决办法:把<bean\>标签改为<beans:bean\>即可

5)        配置hibernate时,报错“Errorcreating bean with name 'sessionFactory' defined in ServletContext resource[/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed;nested exception is org.hibernate.MappingException: Could not get constructorfor org.hibernate.persister.entity.SingleTableEntityPersister”。

解决办法:问题出在实体映射,检查过后,发现是实体配置文件漏写了一些属性。

6)  使用DAO接口查询下载列表的时候,报错如图8.2。

Servlet.service() for servlet [mvc-dispatcher] in context with path [/SSH] threw exception [Request processing....

org.hibernate.hql.internal.ast.QuerySyntaxException:downloadTable is not mapped

图8.2 报错

解决办法:由于我写hql语句的时候,把表名写成了数据库的表名,以及其属性也是数据库的属性名,导致出错;因为hql语句的表名应该对应的是实体类的类名以及其成员变量。


到此总结完毕,以后会继续更新,可能会搬我的学习笔记上来。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值