在JPA中,將createNativeQuery的結果轉換成其他物件

在JPA中,當你使用createNativeQuery去下SQL語法時,你可能會用getResultList來取得查詢出來的結果:

但是當你執行時,會出現無法轉換的錯誤:ClassCastException occured : [Ljava.lang.Object; cannot be cast to models.Post

這時候你可以在執行createNativeQuery時,給定第二個參數,用來說明要把這次的查詢轉換成某個物件,以上面的範例來說,你可以這樣寫:
回頭看一下官方的API,當中有特別提到這兩個不同方法的用途,在你執行update或delete時,就用傳sql字串的方式,其他需要作物件轉換的,就用第二種方法:

Query createNativeQuery(String sqlString)
  • Create an instance of Query for executing a native SQL statement, e.g., for update or delete.
Query createNativeQuery(String sqlString, Class resultClass)
  • Create an instance of Query for executing a native SQL query. 

【相關閱讀】
EntityManager API

Share this post!

Bookmark and Share

0 意見: