java - JOOQ Mysql 整合问题

标签 java mysql sql jooq

我已经为 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/

相关文章:

java - 等待线程池中所有工作线程完成的最佳方法是什么?

php - 多选查询和单选查询有什么区别

mysql - 在mysql中将日期转换为UTC时间戳

java - 在java中显示联系人列表程序中的联系人

java - 如何在不使用泛型的情况下限制 ArrayList 的元素

java - 将 JScrollpane 与 drawline() 方法结合使用

android - SQLiteDatabase.update 不影响行

mysql - 如何在没有任何编程语言的情况下解码mysql或PL/SQL或存储过程中的json数据?

sql - PL/SQL 如果表不存在创建

sql - 具有两个日期参数的两个日期字段中的条件