Spring Data JDBC 自定义查询参数转换器
Posted
技术标签:
【中文标题】Spring Data JDBC 自定义查询参数转换器【英文标题】:Spring Data JDBC custom query parameter converter 【发布时间】:2020-03-30 11:08:41 【问题描述】:我正在尝试向 Spring Data JDBC CrudRepository 添加自定义查询,以允许通过备用自然键查找实体。该实体有一个 ID,在本例中为 Long,以及一个自然键,即 Reference 类型(基础类型为 UUID)。
我已经创建并注册了从引用到 UUID 的自定义转换器,反之亦然,并且希望在通过引用查找实体时使用它们。在从数据库中获取和存储实体时可以进行转换 (Postgres 12.2)。
我无法做到的是定义一个自定义方法,通过它的引用找到实体。
这和我的情况类似:
public interface OrderRepository implements CrudRepository<Order, Long>
@Query("select o from Order o where o.reference = :reference")
Optional<Order> findByReference(@Param("reference") Order.Reference reference);
可以这样实现吗?我正在使用最新版本的 Spring Data JDBC (1.1.6)。 我想避免让查询接受基础类型(在这种情况下为 UUID)。
如果使用自定义查询无法做到这一点,有哪些可用选项? 我考虑过可能将 MyBatis 与 Spring Data JDBC 一起使用?
【问题讨论】:
【参考方案1】:这是一个known issue,它是用2.0 M3 实现的,即available from Springs Milestone repository。请试一试。
注意:2.0 M3 引入了Dialect
,但只有 2.0 RC1` 才提供正确的自动检测,该 RC1 将于今天 2020-03-31 发布。您可能会等待它来省去一些麻烦
【讨论】:
感谢您的回答,我喜欢您使用 Data JDBC 所做的工作 ☺️谢谢,我们尽力了以上是关于Spring Data JDBC 自定义查询参数转换器的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data Elasticsearch自定义@Query,参数超过10个
Spring Data JDBC - 如何使用自定义 ID 生成