Hibernate的hql引发的报错。You have an error in your SQL syntax; check the manual that corresponds to…

  • Post author:
  • Post category:其他


Hibernate的hql引发的报错,虽然标题以这样开头,但是根本原因不在hql,尽管跟hql也有那么一丢丢关系。

故事是这样的。

今天刚开始比较系统的自学hibernate框架时候,突然报了个错。使我一脸蒙蔽。

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘2019.stuinfo stuinfo0_’ at line 1

错误:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获得在“2019.stuinfo stuifo0”附近第1行使用的正确语法。

这是个啥?怎么会出这么个错呢?先百度翻译了一波,啥规则什么什么的。然后百度了一波,不给力啊。我这可是写了个最最最简单的hql。

在这里插入图片描述

我寻思着,这不得是全天下最简单的hql了?这怎么还能报错呢。还能真的是标点符号用成中文了?我盯了半天。好吧,没毛病。然后我尝试写了个sql,结果很OK。看来就是hql的问题。虽然之前没学hibernate,但平时也没少用hql,用的也算是没问题。这怎么跑到这里好好学的时候还能出这种问题呢。

然后控制台输出了一下sql。

hibernate打印的hql解析是Hibernate: select stuinfo0_.id as id1_0_, stuinfo0_.name as name2_0_, stuinfo0_.sex as sex3_0_, stuinfo0_.age as age4_0_ from 2019.stuinfo stuinfo0_

数据库名是2019,数据表名是stuinfo。

然后我将sql弄到navicat中查了一下。真的有问题。然后我将数据库名删了,select stuinfo0_.id as id1_0_, stuinfo0_.name as name2_0_, stuinfo0_.sex as sex3_0_, stuinfo0_.age as age4_0_ fromstuinfo stuinfo0_ 这样进行查询了一下,是没有问题的。

后来研究了一下,发现是

数据库名字是纯数字引发的这个报错

好吧,真的是碰巧了。尬的一批。

数据库和表名可以用数字,但纯数字活数字开头的要加个[]。

例如:select * from [1xxx]。

程序将hql转成sql是数据库名.table名的格式,数字的话,我这边的mysql就识别不了这种语句了。

将数据库的名字改成英文就解决了这个问题了。



版权声明:本文为gaobingjin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。