Spring Data JDBC自定义查询参数转换器

时间:2020-03-30 11:08:41

标签: spring type-conversion spring-data spring-data-jdbc

我正在尝试向Spring Data JDBC CrudRepository添加自定义查询,以允许通过备用自然键查找实体。实体具有一个ID(在这种情况下为Long)和一个自然键,其类型为Reference(基础类型为UUID)。

我已经创建并注册了从Reference到UUID的自定义转换器,反之亦然,并且想在通过Reference查找实体时使用它们。在数据库中获取实体和从数据库中获取实体时,转换有效(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 个答案:

答案 0 :(得分:0)

这是一个known issue,它是由available from Springs Milestone repository的2.0 M3实现的。请尝试一下。

注意:2.0 M3引入了Dialect,但是只有2.0-03才有适当的自动检测功能,该版本将于2020-03-31发行。您可以等待,以免让您头疼