Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 联接表上的jooq别名_Java_Postgresql_Jooq - Fatal编程技术网

Java 联接表上的jooq别名

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,

我有两个连接的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, 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)