我正在使用JOOQ从两个表中检索记录,我创建了返回列的自定义对象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);
}发布于 2018-01-14 07:46:36
如果您想使用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;https://stackoverflow.com/questions/48244208
复制相似问题