JOOQ Mysql 整合问题
JOOQ Mysql integration issue
我已经为 MySQL 设置了 JOOQ。各种表的编译已完成,现在我正在尝试 运行 以下查询:
dsl.selectFrom(WALLPAPER).where(WALLPAPER.PARENT_ID.eq(id)).orderBy(WALLPAPER.VIEW_ORDER).fetchInto(WallpaperItem.class);
但我一直收到这个错误
"org.springframework.jdbc.BadSqlGrammarException: jOOQ; bad SQL grammar [select "library"."wallpaper"."id", "library"."wallpaper"."category_name", "library"."wallpaper"."icon", "library"."wallpaper"."view_order", "library"."wallpaper"."parent_id" from "library"."wallpaper" where "library"."wallpaper"."parent_id" = cast(? as int) order by "library"."wallpaper"."view_order" asc]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '."wallpaper"."id", "library"."wallpaper"."category_name", "library"."wallpaper' at line 1
可能是什么问题?
生成的 SQL 使用双引号 ("name"
) 作为您的架构 / table / 列名称。这就是导致 MySQL 上的语法错误的原因,它期望使用反引号 (`name`
) 引用名称。
之所以会产生双引号,是因为您使用错误的 SQLDialect
配置了 dsl
引用,即 SQLDialect.MYSQL
以外的内容。例如:
DSLContext dsl = DSL.using(connection, SQLDialect.MYSQL);
我已经为 MySQL 设置了 JOOQ。各种表的编译已完成,现在我正在尝试 运行 以下查询:
dsl.selectFrom(WALLPAPER).where(WALLPAPER.PARENT_ID.eq(id)).orderBy(WALLPAPER.VIEW_ORDER).fetchInto(WallpaperItem.class);
但我一直收到这个错误
"org.springframework.jdbc.BadSqlGrammarException: jOOQ; bad SQL grammar [select "library"."wallpaper"."id", "library"."wallpaper"."category_name", "library"."wallpaper"."icon", "library"."wallpaper"."view_order", "library"."wallpaper"."parent_id" from "library"."wallpaper" where "library"."wallpaper"."parent_id" = cast(? as int) order by "library"."wallpaper"."view_order" asc]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '."wallpaper"."id", "library"."wallpaper"."category_name", "library"."wallpaper' at line 1
可能是什么问题?
生成的 SQL 使用双引号 ("name"
) 作为您的架构 / table / 列名称。这就是导致 MySQL 上的语法错误的原因,它期望使用反引号 (`name`
) 引用名称。
之所以会产生双引号,是因为您使用错误的 SQLDialect
配置了 dsl
引用,即 SQLDialect.MYSQL
以外的内容。例如:
DSLContext dsl = DSL.using(connection, SQLDialect.MYSQL);