Hibernate3升级Hibernate5出现Association references an unmapped entity错误如何解决
问题根因
- Hibernate 5 双向关联校验严格度远高于Hibernate 3,你当前配置的一对多集合未指定关联所有者,导致Hibernate无法匹配到已映射的
UserRole实体关联 - 报错提示里的「unmapped entity」属于Hibernate 5的误导性提示,实际是关联关系未绑定到对应实体的属性,并非
UserRole本身没有注册映射
解决方案
仅需修改User.hbm.xml中的bag节点,添加mappedBy="user"属性指定该关联由UserRole实体的user属性维护即可,修改后的配置如下:
<bag name="roles" cascade = "all,delete-orphan" lazy="false" mappedBy="user"> <key column="userId" not-null="true"/> <one-to-many class="com.app.server.model.user.UserRole"/> </bag>
补充说明
- 你之前尝试添加
table="roles"、替换为set节点无效的原因:前者属于多对多/元素集合的配置项,不适用当前的一对多关联场景;后者和bag仅对应集合类型差异,不影响关联映射的匹配逻辑 - 无需调整现有注解配置、无需修改
User类的业务代码,仅修改上述hbm配置即可解决问题
内容的提问来源于stack exchange,提问作者tjholmes66
相关产品推荐
相关产品推荐

