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

Con*_*ady 0 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;
Run Code Online (Sandbox Code Playgroud)

但是,最好能有一些类似的东西

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

Run Code Online (Sandbox Code Playgroud)

沿着他们的路线

Ken*_*han 6

当然。您正在寻找的是@Embeddable@Embedded

首先,@EmbeddableLatLng课堂上注明:

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

   @Column(name = "location_lng")
   private float lng;
}
Run Code Online (Sandbox Code Playgroud)

要使用它:

@Embedded
private LatLng lat;
Run Code Online (Sandbox Code Playgroud)

默认情况下,它将映射到中定义的列@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;
Run Code Online (Sandbox Code Playgroud)