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

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就识别不了这种语句了。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值