java - JOOQ使用Record7封装不同表的字段

标签 java jooq

我正在使用 JOOQ 从 2 个表中检索记录,我创建了返回列的自定义对象 NearByPlace,我阅读了有关 Record7 的内容,发现使用它要好得多它而不是如下创建新对象,我尝试了它,但编译失败,说无法从 Org.JOOQ.Record7 转换为以下别名的记录,知道如何做到这一点吗?

public List<NearByPlace> getNearBy(NearByRequestWrapper wrapper) {

return db().select(
    PLACE.NAME.as("placeName"),
    PLACE.TYPE.as("placeType"),
    PLACE.LAT.as("lat"),
    PLACE.LON.as("lon"),
    EVENT.NAME.as("eventName"),
    DSL.field("earth_distance(ll_to_earth(" + wrapper.lat() + "," + wrapper.lon() + "),ll_to_earth(place.lat, place.lon))* 0.000621371192").as("distanceToReach"),
    DSL.field(EVENT.TYPE).as("eventType"))
    .from(PLACE)
    .leftJoin(EVENT)
    .on(PLACE.ID.eq(EVENT.LOCATION_ID))
    .where(PLACE.ID.eq(1))
    .fetchInto(NearByPlace.class);

}

最佳答案

如果你想使用 jOOQ 的原生 RecordX类型,只需调用 fetch()而不是fetchInto(Class) .

在这种情况下,应该产生 org.jooq.Result<Record7<...>>

更新

根据要求更新了示例代码。

(注意:这个例子假设 Record7 的类型参数应该基于列的名称和我认为它们的含义。如果我猜错了,编译将会失败,但这应该是一个需要解决的简单问题。)

        final org.joog.Result<Record7<String,String,Double,Double,String,String,String>> result = db().select(
                    PLACE.NAME.as("placeName"),
                    PLACE.TYPE.as("placeType"),
                    PLACE.LAT.as("lat"),
                    PLACE.LON.as("lon"),
                    EVENT.NAME.as("eventName"),
                    DSL.field("earth_distance(ll_to_earth(" + wrapper.lat() + "," + wrapper.lon() + "),ll_to_earth(place.lat, place.lon))* 0.000621371192").as("distanceToReach"),
                    DSL.field(EVENT.TYPE).as("eventType"))
                .from(PLACE)
                    .leftJoin(EVENT)
                        .on(PLACE.ID.eq(EVENT.LOCATION_ID))
                .where(PLACE.ID.eq(1))
                .fetch();

        return result;

关于java - JOOQ使用Record7封装不同表的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244208/

相关文章:

java - 基于上下文无关文法解析正则表达式

java - Jackson 序列化 View : nested object

java - Restful API 的读取列表

java - jOOQ - jOOQ 支持定义文件或 SQL 创建脚本的创建吗?

java - JOOQ 的插入...与 PostgreSQL 10 和 JOOQ 3.10 一起返回?

java - 如何以通用方式获取新记录的 ID? (带有 Postgres 的 JOOQ 3.4)

java - 如何使用hadoop安装执行mahout

java - 在 JOOQ 中映射相同类型的连接表

java - 使用 JOOQ 执行 Firebird 存储过程

java - GC 什么时候删除只有弱引用的对象?