Spring 具有动态计算列的数据或纯 JPA

Spring Data or plain JPA with dynamic calculated column

伙计们。 我有一些商店对象,它们有坐标(纬度和经度)。我想公开用户当前位置和商店之间的距离。问题是这个字段是动态的,我不能用 Shop 实体中的常规字段表示值。如果我放这样的东西

@Transient
private BigDecimal distance;

Spring 数据无法映射这个 属性,因为它被忽略了。 我可以使用 jdbcTemplate 和原始查询来实现,但是编码太多了:)

所以基本上,我的问题是如何将动态计算的附加列映射到没有持久化的 JPA 实体 属性

此致。

您可以使用:

1) @PostLoad 用于在应用程序级别自定义计算瞬态 属性 的注释:

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

2) @Formula 注释以在数据库级别进行计算(使用您的母语 SQL 方言):

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

(在这种情况下必须排除@Transient注释。)