我目前正在使用jOOQ构建我的SQL(通过mvn插件生成代码).
执行创建的查询is not done by jOOQ(使用vert.X SqlClient).
假设我想 Select 共享一些相同列名的两个表的所有列.E、 g.UserAccount(100,101,...)和Product(100,101,...).执行以下代码时
val userTable = USER_ACCOUNT.`as`("u")
val productTable = PRODUCT.`as`("p")
create().select().from(userTable).join(productTable).on(userTable.ID.eq(productTable.AUTHOR_ID))
构建方法query.getSQL(ParamType.NAMED)
返回如下查询
SELECT "u"."id", "u"."name", ..., "p"."id", "p"."name", ... FROM ...
这里的问题是,结果集将包含100和101列两次,没有前缀"u."或"p.",因此我无法正确映射/解析它.
有没有一种方法可以让jOOQ在不需要进一步手动操作的情况下将这些列别名为如下所示?
SELECT "u"."id" AS "u.id", "u"."name" AS "u.name", ..., "p"."id" AS "p.id", "p"."name" AS "p.name" ...
我正在使用holy Postgres数据库:)
EDIT:目前的做法是
val productFields = productTable.fields().map { it.`as`(name("p.${it.name}")) }
val userFields = userTable.fields().map { it.`as`(name("p.${it.name}")) }
create().select(productFields,userFields,...)...
但这感觉真的很刺耳