有没有一种方法可以将2个数据库字段映射到JPA中的自定义对象?

时间:2019-06-04 21:46:56

标签: java spring-boot

目前,在我们的数据库中,我们有两个字段:location_lat和location_lng。在Java中,我们会将这两个字段映射为单独的float变量。在这种情况下,可以将这两个单独的float字段映射到一个对象(例如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 个答案:

答案 0 :(得分:6)

好的。您正在寻找的是@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;