named query - How can I use JPQL in a NamedQuery to cerate an entity having a calculated transient attribute? -
named query - How can I use JPQL in a NamedQuery to cerate an entity having a calculated transient attribute? -
i have sql statement:
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))) dist my_table x having dist <= 50 order dist
how can set namedquery within java entity class in way calculated value set entity transient attribute called distance?
for time beingness have tried this:
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)) ) ) distance vehiclestatelogentity vsle (distance <= :radius)
but fails java.lang.nullpointerexception. seems if calculated value cannot accessed via assigned name distance.
i found way build jpql valid:
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)) ) ) distance vehiclestatelogentity 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)) ) )<= :radius) order distance
it's weird can't access alias distance in select-clause can in order by-clause.
jpql named-query transient
Comments
Post a Comment