Hibernate中执行含*的SQL语句时遭遇QuerySyntaxException求助
解决QuerySyntaxException异常的可行思路
问题重现
执行这段代码时触发QuerySyntaxException:
String sqlQuery = "SELECT * FROM t_student01";
IDE内代码显示如下:
排查&解决方向
- 先验证SQL本身有效性:把
SELECT * FROM t_student01直接复制到数据库客户端(如MySQL Workbench、Navicat)执行,若报错,说明是表名不存在、拼写错误或数据库权限问题,先解决这类基础问题。 - 检查ORM框架表映射:如果使用JPA/Hibernate等ORM框架:
- 确认实体类上的
@Table(name = "t_student01")注解是否正确,有没有写错表名(比如漏写数字、大小写不匹配)。 - 核对框架配置,是否存在自动修改表名的规则(比如配置了表名前缀/后缀,或
hibernate.hbm2ddl.auto未正确生成目标表)。
- 确认实体类上的
- 处理表名转义:部分数据库对含数字的表名敏感,尝试给表名加转义符:MySQL用反引号
SELECT * FROMt_student01``,Oracle用双引号SELECT * FROM "t_student01"。 - 区分原生SQL与HQL:如果用的是HQL而非原生SQL,不能直接写数据库表名,要改用实体类名,比如实体类名为
Student,需写成FROM Student或SELECT s FROM Student s。 - 核对数据库连接:确认应用连接的是正确的数据库实例,避免因连错库导致找不到
t_student01表。
内容的提问来源于stack exchange,提问作者Daffy
相关产品推荐
相关产品推荐

