У меня есть оператор SQL:
SELECT x.SPEED, (6371 * acos(cos(radians(16.65555)))
* cos(radians(LATITUDE)) * cos(radians(LONGITUDE) - radians(54.55555))
+ sin(radians(16.65555)) * sin(radians(LATITUDE))) AS dist
FROM MY_TABLE x
HAVING dist <= 50
ORDER BY dist
Как я могу поместить это в NamedQuery в классе объектов Java таким образом, чтобы вычисляемое значение задавалось в этом объекте как переходный атрибут с именем distance?
На данный момент я пробовал это:
SELECT vsle,
(:distance_unit * FUNC('acos', FUNC('cos', FUNC('radians', :latitude)) *
FUNC('cos', FUNC('radians', vsle.geoPosition.latitude)) *
FUNC('cos', FUNC('radians', vsle.geoPosition.longitude) - FUNC('radians', :longitude)) +
FUNC('sin', FUNC('radians', :latitude)) * FUNC('sin', FUNC('radians', vsle.geoPosition.latitude)) ) )
AS distance
FROM VehicleStateLogEntity vsle
WHERE (distance <= :radius)
но это не удается с java.lang.NullPointerException. Похоже, что к вычисляемому значению нельзя получить доступ через присвоенное ему имя distance.