Spring Data или обычный JPA с динамически вычисляемым столбцом - PullRequest
0 голосов
/ 27 июня 2018

ребята. У меня есть несколько магазинных объектов, у которых есть координаты (широта и долгота). Я хочу выставить расстояние между текущим местоположением пользователя и магазином. Проблема в том, что это поле является динамическим, и я не могу представить значение с помощью обычного поля в сущности магазина. Если я поставлю что-то вроде этого

@Transient
private BigDecimal distance;

Spring Data не может сопоставить это свойство, потому что оно игнорируется. Я могу сделать это с помощью jdbcTemplate и необработанных запросов, но это слишком много кода:)

В общем, мои вопросы: как сопоставить столбец сложения, который динамически рассчитывается, с сущностью JPA, у которой нет постоянного свойства

С уважением.

1 Ответ

0 голосов
/ 27 июня 2018

Вы можете использовать:

1) @ PostLoad аннотация для пользовательского расчета переходного свойства на уровне приложения:

@PostLoad
public void calculateDistance() {
    this.distance = ...;
}

2) @ Formula аннотация для расчета на уровне базы данных (с использованием собственного диалекта SQL):

@Formula(value = "...") // your calculation here in native SQL
private BigDecimal distance;

(@Transient аннотация в этом случае должна быть исключена.)

...