Вы можете использовать Именованные параметры , используя @ Param аннотацию
public interface OfferRepository extends JpaRepository<Offer, Long> {
@Query(value = "SELECT *, MIN(6371000 * acos( cos( radians(:latitude) ) * cos( radians( dest.latitude ) ) * cos( radians( dest.longitude ) - radians(:longitude) ) + sin( radians(:latitude) ) * sin( radians( dest.latitude ) ))) as distance FROM offer dest GROUP BY dest.id having MIN(distance)",
nativeQuery = true)
Tuple getClosestOffer(@Param("latitude") double latitude, @Param("longitude") double longitude);
}
или использовать Индексированные параметры:? 1? 2 inвам jpql
public interface OfferRepository extends JpaRepository<Offer, Long> {
@Query(value = "SELECT *, MIN(6371000 * acos( cos( radians(?1) ) * cos( radians( dest.latitude ) ) * cos( radians( dest.longitude ) - radians(?2) ) + sin( radians(?1) ) * sin( radians( dest.latitude ) ))) as distance FROM offer dest GROUP BY dest.id having MIN(distance)",
nativeQuery = true)
Tuple getClosestOffer(double latitude, double longitude);
}
, если вы хотите показать разрешенные параметры в вашем журнале, просто установите уровень ведения журнала org.hibernate.type в trace
application.properties:
spring.jpa.show-sql=true
logging.level.org.hibernate.type=trace