2007年1月6日星期六

2007-1-5 星期五

看编程思想的异常处理这一章,Throwable是所有异常的基类,Error和Exception分别继承了Throwable,Error是虚拟机运行报告错误,一般我们不用关心,Exception 是所有编程异常的基类,它又分为被检查异常和不检查异常,不检查异常是所有继承于RuntimeException的异常,这些异常编译器在编译时不进行检查,也就是不用有异常声明,遇到错误会自动抛出,被检查异常时除RuntimeException的异常,必须有异常声明,编程思想里面的说法好像大家对强制异常声明不是很赞同,理由没能理解深刻,都是大师们说的话,哈哈。咱还不够那个级别。

    其中有这样一个问题,就是一个方法有一个异常必须作处理,可又不知道该如何处理,这里有个办法就是在catch里面将其转换成运行时异常RuntimeException,这样就不用异常声明了。

 

    哈哈,刚刚看了异常处理这一章,今天就用上了,编好了一段hibernate的代码,测试就是没有结果输出,并且没有异常出现,真是让人恼火,找阿找阿找,最后发现在初始化SessionFactory的静态语句块中虽然用了try…catch语句但是在catch里面只是将异常抛出,而在跳用这段代码的时候,并没有获取这个异常,所以造成异常丢失。

 

另外,错误的原因是虚拟机找不到一个属性的get方法,换了个名字就好了,注意命名规则,一个小写字母然后接一个大写字母就不行,像这样sLive。注意/。

 

在执行Hibernate程序中出现下面错误

Could not read mappings from resource: DepartmentTwo.hbm.xml

检查也没错阿,找不到的文件老老实实在那呆着了阿,仔细检查异常信息,发现下面还有这么一句。

org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.hwebmapping.pojo.Department

原来一个持久类不能多次被映射,所以才出现这样的异常,原因是在做练习的时候为了省事,将原来做好的持久类想接着用一下,没想到Hibernate有意见,哈哈。

 

如果在调用session.save()方法的时候如果传入的对象所的类没有被映射,就会出现线面的异常信息。

uninitialized proxy passed to save()

未初始化的代理

 

不错,今天收获不小,哈哈。

4 条评论:

  1. 我的也是,结果发现确实有重复的,去掉重复的之后即可使用了。重复是在配置文件上重复。

    回复删除
  2. org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.hwebmapping.pojo.Department原来一个持久类不能多次被映射,所以才出现这样的异常,原因是在做练习的时候为了省事,将原来做好的持久类想接着用一下,没想到Hibernate有意见,哈哈。这是错误是怎么解决的呢??

    回复删除
  3. uninitialized proxy passed to save()这个错误怎么改啊?我老是出现这个错误。

    回复删除
  4. 猜想你save的对象是已经持久化过的用Hibernate.IsInitialized(obj);;判断是否已持久化试试看

    回复删除