Hibernate:使用地图进行映射并获取参数类型不匹配

Hibernate: mapping with a map and getting argument type mismatch

我在 Java 中得到了这个 class DepartmentPerson,我在 Hibernate 中映射了一个地图,如下所示:

<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>

并且在 class 中,我将 acceptByPeriod 定义如下:

private Map<Integer, Integer> acceptByPeriod = new HashMap<>();

每当我 运行 查询 DepartmentPerson 时,我都会收到消息:“java.lang.IllegalArgumentException:参数类型不匹配”。这与 acceptByPeriod 映射有关,因为当我删除它时问题就消失了。数组 tbl_department_people_accept 上的所有 3 个字段都是 int 类型。我真的不明白出了什么问题;我之前在不同的 classes 中完成过这种类型的映射(使用 映射和 映射,DepartmentEEK 是一个复合元素)并且它工作得很好;事实上,我已经复制了其中一个 classes 的代码,只是更改了字段的名称。我在这里束手无策。知道如何让它工作,或者至少如何弄清楚哪个字段的参数类型不匹配吗?

在这个post的帮助下找到了问题:IllegalArgumentException: argument type mismatch in Hibernate

问题不在于地图的类型,而在于它的 setter。我把它写成:

public void setAcceptByPeriod(HashMap<Integer, Integer> acceptByPeriod)

需要的时候

public void setAcceptByPeriod(Map<Integer, Integer> acceptByPeriod)