spring-data-jdbc - Spring data jdbc:如何使用来自 org.springframework.data.geo 包的 Point
问题描述
我有一个实体
public class Arena {
@Id
private final Long id;
@Embedded(onEmpty = Embedded.OnEmpty.USE_NULL)
final Point location;
}
点来自org.springframework.data.geo包
和它的 Postgres 模式
CREATE TABLE arena
(
id SERIAL NOT NULL
CONSTRAINT arena_pk
PRIMARY KEY,
location POINT
);
当我尝试通过 spring data jdbc 存储库(arenaRepository.findAll())使用实体时
public interface ArenaRepository extends CrudRepository<Arena, Long> {
}
我收到一个错误
请求处理失败;嵌套异常是 org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; 错误的 SQL 语法 [SELECT arena.id AS id, arena.y AS y, arena.x AS x FROM arena]; 嵌套异常是 org.postgresql.util.PSQLException:错误:列 arena.y 不存在
我看到 SQL 与架构不匹配。但是是否可以通过 Spring Data Jdbc 使用“geo”类?
我尝试将位置介绍为列表并且它有效。这是正确的方法吗?
解决方案
您可以注释包含org.springframework.data.geo.Point
with的字段@Embedded
。这会将其映射到两列x
和y
.
我目前看不到将其映射到 PostgresPoint
列的方法。当然没有任何特别的支持。
推荐阅读
- python - Python 方法(在哪里可以找到其他资源)
- html - 在父div中水平居中div?
- python-3.x - 如何使用 matplotlib 和 gridspec 将 pickle 文件中的轴添加到现有图形?
- python - 运行代码时出现UnboundLocalError,这根本没有意义
- angular - 出现错误 RangeError:尝试导入共享模块 IONIC 时超出了最大调用堆栈大小
- python-3.x - 为什么索引如此有效?
- javascript - 如何分发带有子模块的 es6 包
- css - 有没有办法减小 Divi style.css 和 style.dev.css 的大小?
- r - 如何在r中将多个选定的列名从整数转换为日期
- amazon-web-services - 根据代码逻辑在特定时间触发 AWS lambda 函数的执行