java 常見錯誤總結

 

  篇前言

    很久就想寫這樣一篇在日常開發中見到的錯誤解決總結了,一直以時間爲藉口而疏於整理,現在終於下定決心了.哪就要一直寫下去,好好學習.

 

 

  問題總結:

 

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(); 搞定。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章