JOOQ使用Record7封装来自不同表的字段

问题描述 投票:0回答:1

我正在使用JOOQ从2个表中检索记录,我创建了自定义对象NearByPlaceof返回的列,我读到关于Record7and看到它使用它比使用它更好,而不是如下所示创建新对象,我尝试了但是它在编译时失败了说无法从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);

}
java jooq
1个回答
1
投票

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

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

UPDATE

根据要求更新示例代码。

(注意:这个例子假设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;
© www.soinside.com 2019 - 2024. All rights reserved.