如何对Spring Boot数据jpa使用自定义查询

时间:2019-01-14 13:19:21

标签: java postgresql spring-boot elasticsearch spring-data-jpa

我正在尝试使用Spring Boot创建一个Web应用程序。我的持久数据存储在PostgreSQL数据库中。但是,我需要对全文本搜索使用elasticsearch。 (我知道有postgres全文搜索,但我需要弹性)。为此,我正在使用zombodb。这是Postgres的扩展,允许postgres和ElasticSearch一起工作。但是它有自己的SQL syntax。全文搜索的示例:

SELECT * FROM products WHERE products ==> 'sports or box' 

当我直接使用此查询时,它可以工作。但是,当我想使用带有类似参数的本地查询

SELECT * FROM products WHERE products ==> :searched

它给出“操作员不存在:产品==>字符变化”错误。 有什么解决方案吗?

2 个答案:

答案 0 :(得分:0)

好吧,在我们的项目中,我们还使用了postgresql(POSTGIS)的扩展名。 在我们的案例中,我们直接使用了JPA的本机查询,甚至postgis特定的方法也能完美地工作。因此,我建议您使用本机查询支持。

这里是一个例子:

public interface ProductRepository extends JpaRepository<Product,Long>{
    @Query(value = "SELECT * FROM products WHERE products ==> 'sports or box'", nativeQuery=true)
    List<Product> someFancyMethodName();
}

答案 1 :(得分:0)

@Query注释对我不起作用。我能够实现this soulution,工作正常。