Я хотел бы иметь поле в моем Entity, которое не является постоянным (я не хочу иметь столбец для него в базе данных), потому что значения для него будут зависеть от текущего запроса. В этом поле будет храниться расстояние местоположения сущности от заданного произвольного местоположения. Я хотел бы отфильтровать результаты по максимальному расстоянию, которое будет отображаться в результатах, поэтому значения этого поля расстояния должны быть вычислены во время запроса.
Моя проблема в том, что, используя аннотацию @Transient
, я могу сделать так, чтобы столбец игнорировался базой данных, поэтому он не будет создан, но аннотация заставляет JPA полностью игнорировать поле, поэтому мой собственный запрос не может заполнить поле с вычисленным значением. (фильтрация работает в запросе и я использую POSTGRESQL)
@Query(value = " SELECT * FROM ( SELECT * , ( 6371 * acos( cos( radians(?1) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(?2) ) + sin( radians(?1) ) * sin( radians( latitude ) ) ) ) AS distance FROM health_center GROUP BY id) ss WHERE distance < ?3 ORDER BY distance LIMIT ?4", nativeQuery = true)
List<HealthCenter> findByWithinRange(Float latitude, Float longitude, Integer distance, Integer limit);