1. 程式人生 > >No data type for node: org.hibernate.hql.ast.tree.IdentNode問題的解決

No data type for node: org.hibernate.hql.ast.tree.IdentNode問題的解決

      使用Hibernate的時候,出現這個錯誤資訊,經過網上的解決方法,成功的解決這個錯誤資訊,並且記錄下來。

       從錯誤資訊,可以看出是因為在執行hql語句的時候,hql中填寫的欄位沒有和實體類中的欄位對應,但是我檢視自己的實體類中的屬性的名稱和屬性對於資料庫中的欄位的對映,發現並沒有什麼錯誤,然後baidu一下,成功的解決了問題,

   報錯的原因:

我在實體類中寫的屬性的名稱是以大寫字母開頭,所以在hql語句呼叫我這個屬性的時候,不能獲取到對應的屬性,故報錯,然後我將對應的屬性的開頭的字母變為小寫,遵守駝峰命名法,然後重寫get/set方法,成功解決。

    原理:

             hibernate中的hql語句,是根據查詢的欄位去查詢對應的實體類,然後查詢對應的欄位,其中,hql語句中,拼接的欄位名稱,並不是直接去查詢實體類中的欄位,而是去呼叫get方法獲取到對應的屬性名,然後將get方法進行切割,將get去掉,然後將首字母變為小寫,所以如果欄位的首字母為大寫,就會找不到該欄位,無法進行對映,所以該異常的解決方法,將屬性的首字母小寫