Mysql 查询遇到的一个问题,我错在哪里了 ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
HarryQu
V2EX    MySQL

Mysql 查询遇到的一个问题,我错在哪里了 ?

  •  
  •   HarryQu 2018-10-18 18:19:58 +08:00 3717 次点击
    这是一个创建于 2624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    查询问题卡了一个多个小时,特来求助 。

    两张表 : 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 
    15 条回复    2018-10-19 14:37:56 +08:00
    allen9527
        1
    allen9527  
       2018-10-18 18:29:23 +08:00
    left outer join order 关键字了?
    moresteam
        2
    moresteam  
       2018-10-18 18:35:03 +08:00 via Android
    楼主可以表述的专业点吗。。
    moshao6
        3
    moshao6  
       2018-10-18 18:38:10 +08:00
    order 本身就是关键字 怎么会起这样的表名
    F281M6Dh8DXpD1g2
        4
    F281M6Dh8DXpD1g2  
       2018-10-18 18:40:18 +08:00
    保留字做表名,佩服
    zdt3476
        5
    zdt3476  
       2018-10-18 18:58:05 +08:00
    order 做表名导致的。。。 看下是否能用反引号包起来,`Order` 或者是换个名字
    oyosc
        6
    oyosc  
       2018-10-18 19:01:04 +08:00
    楼主新手?
    wuwuwu5
        7
    wuwuwu5  
       2018-10-18 19:04:34 +08:00
    换个表名,我以前还用 group 做过表名。
    metrxqin
        8
    metrxqin  
       2018-10-18 19:17:23 +08:00
    外键约束已经被业务唾弃。
    U7Q5tLAex2FI0o0g
        9
    U7Q5tLAex2FI0o0g  
       2018-10-18 19:20:02 +08:00
    我一般表名用复数
    users
    orders
    就不会与关键字冲突
    或者你的 sql 应该用 `user` 、 `order`
    johnniang
        10
    johnniang  
       2018-10-18 19:39:54 +08:00 via Android
    @littleylv JPA 没办法做到自动加上``
    PythonAnswer
        11
    PythonAnswer  
       2018-10-18 19:40:45 +08:00 via iPhone
    加下划线 这样能强迫自己记住关键字
    kslr
        12
    kslr  
       2018-10-18 19:54:20 +08:00 via Android
    复数哦同志
    947211232
        13
    947211232  
       2018-10-19 08:56:31 +08:00
    代码的话应该:
    @Table(name="order")

    @Table(name="`order`"),

    关键词作表名、字段属性的话用``包括

    sql 的话应该:
    left outer join order customer1_ on user0_.id=customer1_.user_id where user0_.id=?

    left outer join `order` customer1_ on user0_.id=customer1_.user_id where user0_.id=?


    LZ 有点瑕疵就是库名、表名、别名太乱
    nekoneko
        14
    nekoneko  
       2018-10-19 08:57:32 +08:00
    一般没个几年经验不敢用 JPA 或者 Hibernate 的映射
    HarryQu
        15
    HarryQu  
    OP
       2018-10-19 14:37:56 +08:00
    @moshao6 之前没有意识到这是一个关键字,只是把它当成 订单 - Order
    @metrxqin 因为我对 mysql 了解不深 , 图省事想通过级联更新和级联删除减少些数据库操作。查了点资料 , 猛的发现外键的局限性,谢谢提醒。
    @littleylv 好主意 , 我查了点资料 ,决定以 t_ 开头,避免这种错误。
    @947211232 我通过 jpa hibernate 操作 mysql 数据库,上面的 sql 语句是 hibernate 生产的,因此命名有有点乱 。
    @nekoneko 确实,细节都被封装起来,对于我这种新手,一不小心就踩坑了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5697 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 01:46 PVG 09:46 LAX 17:46 JFK 20:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86