篇前言
很久就想写这样一篇在日常开发中见到的错误解决总结了,一直以时间为借口而疏于整理,现在终于下定决心了.哪就要一直写下去,好好学习.
问题总结:
1:
为了实现透明化的延迟加载机制,hibernate进行了大量努力。其中包括JDK Collection接口的独立实现。
如果我们尝试用HashSet强行转化Hibernate返回的Set 型对象:
Set hset = (HashSet)user.getAddresses();
就会在运行期得到一个java.lang.ClassCastException, 实际上,此时返回的是一个Hibernate的特定Set实现“net.sf.hibernate.collection.Set”对象,而非
传统意义上的JDK Set实现。这也正是我们为什么在编写POJO时,必须用JDKCollection 接口(如Set,Map), 而非特定的JDKCollection 实现类(如HashSet、HashMap)申明Collection属性的原因。
解决方法:
net.sf.hibernate.collection.Set hs=(net.sf.hibernate.collection.Set) servicebase.getXzfwServiceMaterials();
接着该怎么操作这个 hs.就和JDK的差不多的方法了.
2:
ckeckbox js 全选功能name命名问题:
jsp中,当做checkbox全选功能时,其name不能命名为“XXXVO.name”,因为在js中用document.getElementsById(XXX)时,只能选中一个,而不能像name那样可以全部选中。
3:
关于hibernate延迟加载的异常 no session or session is closed
但是如果我们采用了延迟加载机制,希望在一些情况下,实现非延迟加载时的功能,在提供一个完整的Bspinq对象时,把所关联的bspInqParts 信息在session关闭之后仍然可以使用。这就要采用hibernate.initialize方法,可以通过强制加载关联对象来实现这一功能。
Hibernate.initialize(inq.getBspInqParts());
Session.close(); 搞定。