Есть ли способ сопоставить 2 поля базы данных с пользовательским объектом в JPA? - PullRequest
0 голосов
/ 05 июня 2019

В нашей базе данных на данный момент есть два поля: location_lat и location_lng.В Java мы отобразили бы эти два поля как отдельные переменные с плавающей точкой.В этом случае было бы возможно отобразить эти два отдельных поля с плавающей точкой в ​​один объект (например, объект LatLng) Для GET, PUT и т. Д. *

Обычно два поля выглядят следующим образом:

@Column(name = "location_lat")
private float lat;

@Column(name = "location_lng")
private float lng;

Но было бы неплохо иметь что-то вроде

@Column(name = "lat") AND @Column(name = "lng")
private LatLng location;

Что-то в этом роде

1 Ответ

6 голосов
/ 05 июня 2019

Конечно.То, что вы ищете, это @Embeddable и @Embedded.

Во-первых, аннотируйте @Embeddable на LatLng класс:

@Embeddable
public class LatLng {
   @Column(name = "location_lat")
   private float lat;

   @Column(name = "location_lng")
   private float lng;
}

Чтобы использовать его:

@Embedded
private LatLng lat;

По умолчанию он сопоставляется со столбцами, определенными в @Embeddable.Переопределить их для сопоставления с другими столбцами.Вы можете использовать @AttributeOverrides:

@Embedded
@AttributeOverrides({
        @AttributeOverride(name="lat", column=@Column(name="LAT_COLUMN_XXX")),
        @AttributeOverride(name="lng", column=@Column(name="LNG_COLUMN_YYY"))
})
private LatLng lat;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...