1. 程式人生 > >關於hibernate方式獲取記錄的時候欄位為空就獲取空記錄的解決方法

關於hibernate方式獲取記錄的時候欄位為空就獲取空記錄的解決方法

在oracle資料庫下,如果是使用hibernate查詢資料的時候,特別是使用view的物件查詢資料的時候,有些欄位為空的時候就會出現整條記錄都獲取不到的情況,這是因為在生成xml檔案和pojo(bean)檔案的時候,因為view沒有主鍵的說法,所以會生成一個pojo類和一個對應的ID類(主鍵類),這個ID類就是view中的所有欄位,那個pojo類就是這個ID類一個欄位,在hibernate獲取記錄時候,主鍵類為空就會放棄這條記錄,所以如果使用view的pojo類查詢資料時候,出現某一個欄位為空,整條記錄就為空了,如果所有記錄都有一個欄位為空,則會出現獲取到的記錄數量為 0 的情況。

解決方法:

1,重新編寫ID類和pojo類,把非空欄位,例如使用原表中的主鍵為ID類欄位,其他欄位都寫在pojo類中,並提供getter/setter方法。

2,編寫xml檔案:

把非主鍵欄位改成一般的欄位,例如以下的一個非主鍵欄位修改為:

 <composite-id name="id" class="com.bl.pojo.ViewBlParseAllScoreId">

           <key-property name="subSchoolId" type="java.lang.Long">
                <column name="SUB_SCHOOL_ID" precision="18" scale="0" />
            </key-property>

 </composite-id>

 修改後

  <property name="subSchoolId" type="java.lang.Long">
                <column name="SUB_SCHOOL_ID" precision="18" scale="0" />
  </property>

這樣既可。