【解决】MappingException提示Association references unmapped class错误

错误代码描述:

Caused by: org.hibernate.MappingException: Association references unmapped class: User

解决问题步骤:

  • 查看User有没有写对应的映射文件User.hbm.xml
  • 写了映射文件,在hibernate.cfg.xml中有没有注册,注册的路径对不对<mapping resource="com/fate/oa/domain/User.hbm.xml" />

以上为解决的基本思路,但我遇到的情况以上都没有错误,那就只能是User.hbm.xml写的有问题了。

问题
一般在映射文件中指定对应的实体类的class有两种方法:

  1. 在class标签的name属性中指定对应类的全名:
 <hibernate-mapping>
        <class name="com.fate.oa.domain.Role" table="oa_role">
  1. <hibernate-mapping package="">的package属性中填写对应的类所在的包名:(推荐使用)
<hibernate-mapping package="com.fate.oa.domain">
        <class name="Role" table="oa_role">

发现问题
到这时候我终于发现我的问题真正的原因是出在我使用了第一种方式。当然,第一种方式是可以的,只是相对麻烦,容易不小心出错。之前映射文件内容简单,没有多对一,一对多等关系映射的时候只需要写本类的class全名,而我也有写,所以没报错。然而当有了复杂的映射关系时,配置时我却忘了给class属性都写上全名,所以出错。由此可见直接写在package上要来得简单,以后都应该用这种方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值