Java 联接表上的jooq别名
我有两个连接的SQL表:Java 联接表上的jooq别名,java,postgresql,jooq,Java,Postgresql,Jooq,我有两个连接的SQL表: CREATE TABLE "B" ( id BIGSERIAL PRIMARY KEY, lastname TEXT )) 我想请求它在这个对象中填充数据: public class A { public long id; public String firstname; pulic String lastname; } 有这样一个请求: SELECT A.id AS id, A.firstname AS firstname,
CREATE TABLE "B" (
id BIGSERIAL PRIMARY KEY,
lastname TEXT
))
我想请求它在这个对象中填充数据:
public class A {
public long id;
public String firstname;
pulic String lastname;
}
有这样一个请求:
SELECT A.id AS id, A.firstname AS firstname, B.lastname AS lastname FROM A JOIN B ON a.b_id = B.id WHERE A.id = 42
但是,我不知道如何为表B
的SQL字段lastname
设置别名,以便能够填充类A
中的对象属性lastname
有可能做到吗?如果是,怎么做?如果列已与目标类中的属性匹配,则不必对其进行别名。虽然a中的列可能来自表
a
或表B
,但将仅考虑单个列名进行映射。如何生成这些列名并不重要
因此,以下查询将立即起作用:
DSL.using(configuration)
.select(A.ID, A.FIRSTNAME, B.LASTNAME)
.from(A)
.join(B).on(A.B_ID.eq(B.ID))
.where(A.ID.eq(42))
.fetchInto(A.class)
当然,如果您觉得需要对SQL中生成的列名进行完全控制,只需使用以下方法对它们进行别名:
DSL.using(configuration)
.select(A.ID, A.FIRSTNAME, B.LASTNAME)
.from(A)
.join(B).on(A.B_ID.eq(B.ID))
.where(A.ID.eq(42))
.fetchInto(A.class)
DSL.using(configuration)
.select(
A.ID.as("id"),
A.FIRSTNAME.as("firstname"),
B.LASTNAME.as("lastname"))
.from(A)
.join(B).on(A.B_ID.eq(B.ID))
.where(A.ID.eq(42))
.fetchInto(A.class)