
查询问题卡了一个多个小时,特来求助 。
两张表 : User 表 和 Order 表。 User 有多个 Order。 Order 只能有一个 User。
代码如下图 : User 表 :
Order 表 :
需求 : 根据 User 的 id 返回 User 对象 。
我使用的方法 : 直接通过 jpa 查询
Optional<User> optiOnal= userDao.findById(userId); 遇到的问题 : 查询过程,直接报错 :
Hibernate show sql :
select user0_.id as id1_1_0_, user0_.age as age2_1_0_, user0_.name as name3_1_0_, user0_.sex as sex4_1_0_, customer1_.user_id as user_id2_0_1_, customer1_.order_id as order_id1_0_1_, customer1_.order_id as order_id1_0_2_, customer1_.user_id as user_id2_0_2_ from user user0_ left outer join order customer1_ on user0_.id=customer1_.user_id where user0_.id=? > 1064 - 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 'order customer1_ on user0_.id=customer1_.user_id where user0_.id=?' at line 7 > Time: 0s 1 allen9527 2018-10-18 18:29:23 +08:00 left outer join order 关键字了? |
2 moresteam 2018-10-18 18:35:03 +08:00 via Android 楼主可以表述的专业点吗。。 |
3 moshao6 2018-10-18 18:38:10 +08:00 order 本身就是关键字 怎么会起这样的表名 |
4 F281M6Dh8DXpD1g2 2018-10-18 18:40:18 +08:00 保留字做表名,佩服 |
5 zdt3476 2018-10-18 18:58:05 +08:00 order 做表名导致的。。。 看下是否能用反引号包起来,`Order` 或者是换个名字 |
6 oyosc 2018-10-18 19:01:04 +08:00 楼主新手? |
7 wuwuwu5 2018-10-18 19:04:34 +08:00 换个表名,我以前还用 group 做过表名。 |
8 metrxqin 2018-10-18 19:17:23 +08:00 外键约束已经被业务唾弃。 |
9 U7Q5tLAex2FI0o0g 2018-10-18 19:20:02 +08:00 我一般表名用复数 users orders 就不会与关键字冲突 或者你的 sql 应该用 `user` 、 `order` |
11 PythonAnswer 2018-10-18 19:40:45 +08:00 via iPhone 加下划线 这样能强迫自己记住关键字 |
12 kslr 2018-10-18 19:54:20 +08:00 via Android 复数哦同志 |
13 947211232 2018-10-19 08:56:31 +08:00 |
14 nekoneko 2018-10-19 08:57:32 +08:00 一般没个几年经验不敢用 JPA 或者 Hibernate 的映射 |
15 HarryQu OP |