我在 Java 中有這個類 DepartmentPerson,我在 Hibernate 中映射了一個 Map,如下所示:
<map cascade="save-update" name="acceptByPeriod" table="tbl_department_people_accept">
<key column="fk_department_people_asc_id"/>
<map-key column="fk_period_id" type="int"/>
<element type="int" column="fld_accept"/>
</map>
在課堂上,我將 acceptByPeriod 定義如下:
private Map<Integer, Integer> acceptByPeriod = new HashMap<>();
每當我在 DepartmentPerson 上運行查詢時,都會收到訊息:“java.lang.IllegalArgumentException:引數型別不匹配”。這與 acceptByPeriod 映射有關,因為當我洗掉它時,問題就消失了。陣列 tbl_department_people_accept 上的所有 3 個欄位都是 int 型別。我真的不明白出了什么問題;我以前在不同的類中做過這種型別的映射(使用 <Integer, Date> 映射和 <Integer,DepartmentEEK> 映射,DepartmentEEK 是一個復合元素),它作業得很好;事實上,我已經從其中一個類中復制了代碼,只是更改了欄位的名稱。我在這里束手無策。知道如何讓它作業,或者至少如何找到導致引數型別不匹配的欄位的底部嗎?
uj5u.com熱心網友回復:
在這篇文章的幫助下發現了問題:IllegalArgumentException:Hibernate 中的引數型別不匹配
問題不在于地圖的型別,而在于它的設定器。我把它寫成:
public void setAcceptByPeriod(HashMap<Integer, Integer> acceptByPeriod)
當它需要時
public void setAcceptByPeriod(Map<Integer, Integer> acceptByPeriod)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/454325.html
