java - 有没有办法将 2 个数据库字段映射到 JPA 中的自定义对象?

标签 java spring-boot

目前在我们的数据库中,我们有两个字段: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;

沿着这些路线的东西

最佳答案

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

首先,在 LatLng 类上注释 @Embeddable:

@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;

关于java - 有没有办法将 2 个数据库字段映射到 JPA 中的自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56451765/

相关文章:

java - 为什么ArrayList中必须保留一个Hashmap作为2行ListView的数据源

java - java中的Selenium无法识别类名

java - 为什么添加新组件时 BorderLayout 会覆盖组件?

java - 使用同步方法锁定时释放 BufferedReader.readLine()

java - 使用jsp以表格格式显示csv文件数据

java - 如何在 Spring boot 中使用非实时数据源创建 Jar 文件?

java - 未发现 @Retryable 方法(也是 @Scheduled)的 @Recover 注释方法

java - Spring JPA : How to Model Percentage Value

java - 如何防止 Spring Boot Tomcat Jackson 中 flushBuffer 的并发锁定?

spring - 如何在 Spring Security 6 中自定义 expressionHandler 和 accessDecisionManager