Unter der Annahme, dieser statische Import:
import static org.jooq.impl.DSL.*;
Hier ist, wie Sie Ihre Abfrage schreiben:
GeoFeatures f = Tables.GEO_FEATURES;
Field<Double> distance =
val(3959.0).mul(acos(cos(rad(37.0)))).mul(cos(rad(f.LAT)))
.mul(rad(f.LONG).sub(rad(-122.0)).add(sin(rad(37.0)))
.mul(sin(rad(f.LAT))).as("distance")
DSL.using(configuration)
.select(
f.FEATURE_NAME,
distance
)
.from(f)
.having(distance.lt(25.0))
.orderBy(distance)
Dies sind wichtige Dinge im Auge zu behalten:
- Jede SQL-Funktion übersetzt zu einer Funktion in
org.jooq.impl.DSL
- Arithmetische Operationen sind über „Infix“ -Notation zugänglich, aber die Betreiber haben als Methodennamen geschrieben werden, wie
* = mul()
, + = add() or plus()
, - = sub() or minus()
- Zahlen, die auf der linken Seite einer Rechenoperation sind, wurden durch jOOQ zu umwickelnden mit
val()
(für bind-Variablen) explizit API oder inline()
(für inlining)
Vielleicht 'Abfrage query = create.query ("SELECT ...")' wie so? Es sollte hilfreiche Informationen auf der Herstellerseite von JOOQ geben - oder mische ich das mit etwas anderem? – Dilettant