我已经为 MySQL 安装了 JOOQ。各种表的编译已完成,现在我正在尝试运行以下查询:
dsl.selectFrom(WALLPAPER).where(WALLPAPER.PARENT_ID.eq(id)).orderBy(WALLPAPER.VIEW_ORDER).fetchInto(WallpaperItem.class);
但我一直收到这个错误
"org.springframework.jdbc.BadSqlGrammarException: jOOQ; 错误的 SQL 语法 [选择 "library"."wallpaper"."id", "library"."wallpaper"."category_name", "library"。 “壁纸”。“图标”,“图书馆”。“壁纸”。“view_order”,“图书馆”。 "= cast(? as int) order by "library"."wallpaper"."view_order"asc]; 嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以便在第 1 行的“.wallpaper”.“id”、“library”、“wallpaper”、“category_name”、“library”、“wallpaper”附近使用正确的语法
可能是什么问题?
最佳答案
生成的 SQL 使用双引号 ("name"
) 作为您的架构/表/列名称。这就是导致 MySQL 出现语法错误的原因,它期望使用反引号 (`name`
) 来引用名称。
生成双引号的原因是因为您使用错误的 SQLDialect
配置了您的 dsl
引用,即 SQLDialect.MYSQL
之外的其他内容>。例如:
DSLContext dsl = DSL.using(connection, SQLDialect.MYSQL);
关于java - JOOQ Mysql 整合问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605093/