You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC项目启动报错:Employee实体未映射问题求助

解决Spring MVC中Employee实体未映射的HQL错误

错误信息

jakarta.servlet.ServletException: 请求处理失败: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Employee未映射 [from Employee]
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1022)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

核心问题

Hibernate无法识别Employee实体类的映射配置,导致执行HQL查询时抛出未映射异常。

排查与解决方案

1. 修正Spring与Hibernate版本不兼容的配置

你当前使用Spring 6.1.10搭配Hibernate 6.2.0.Final,但配置文件中用的是针对Hibernate 5的SessionFactory和事务管理器类,两者不兼容,导致实体扫描失败。

修改applicationContext.xml中的以下配置:

  • 将SessionFactory的实现类从org.springframework.orm.hibernate5.LocalSessionFactoryBean改为org.springframework.orm.hibernate6.LocalSessionFactoryBean
  • 将事务管理器类从org.springframework.orm.hibernate5.HibernateTransactionManager改为org.springframework.orm.hibernate6.HibernateTransactionManager

修改后的配置片段:

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate6.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan" value="spring_mvc.entity" />
    <property name="hibernateProperties">
        <props>
            <prop key="current_session_context_class">thread</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager"
      class="org.springframework.orm.hibernate6.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

2. 验证实体类配置

你的Employee实体类注解配置正确:

  • 标注了@Entity和@Table注解
  • 使用了Jakarta EE的jakarta.persistence.*包下的注解(适配Spring 6和Hibernate 6的要求)
  • 包路径spring_mvc.entity与配置文件中的packagesToScan一致,无拼写错误

3. 清理并重新构建项目

执行Maven命令清理旧的编译文件并重新构建,确保实体类的注解被正确处理:

mvn clean install

4. 检查HQL语法

你的HQL语句from Employee写法正确,HQL使用实体类名称(区分大小写)而非数据库表名,此处无问题。

内容的提问来源于stack exchange,提问作者Tima Khamza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:27:33