Hibernate执行查询报Person is not mapped错误,类名正确仍报错如何解决?
问题根因
Hibernate实体扫描路径配置错误,导致Person实体类未被识别加载,执行HQL查询时就会触发Person is not mapped错误。
你提供的applicationContext.xml中,LocalSessionFactoryBean的p:packagesToScan属性仅配置了ch.fdsgn.dao包,而Person实体类存放在ch.fdsgn.models包下,Hibernate只会扫描指定路径下的类识别实体,自然无法匹配到Person类。
修复方案
修改applicationContext.xml中的packagesToScan配置,加入实体类所在的包路径,多包路径用英文逗号分隔即可:
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" p:dataSource-ref="webDataSource" p:packagesToScan="ch.fdsgn.models,ch.fdsgn.dao" p:hibernateProperties-ref="hibernateProperties"/>
可选检查项
如果修改后仍报错,可以排查以下两点:
- 确认实体类上的
@Entity注解导入的是javax.persistence.Entity,不要误导入Hibernate自定义的Entity注解,你当前的导入配置是正确的。 - 确认HQL语句中写的是实体类名
Person,而不是数据库表名users,你当前的HQL写法符合规范。
内容的提问来源于stack exchange,提问作者Adobe
相关产品推荐
相关产品推荐

