【发布时间】:2018-02-19 20:38:17
【问题描述】:
我将 JPA 与 Spring Boot 和 Postgres 一起使用。我正在尝试使用扩展 org.springframework.data.repository.CrudRepository 的存储库运行本机查询。查询如下所示:
public interface MyRepository extends CrudRepository<MyObject, String> {
...
@Query(value = "SELECT * FROM objects WHERE metadata @>
jsonb_build_object('tenant', :tenant , 'objectType', :objectType )", nativeQuery = true)
List<MyObject> findAllBy(@Param("tenant") String tenant, @Param("objectType") String objectType);
...
}
当我运行查询时出现错误:
org.postgresql.util.PSQLException: 错误: 无法确定数据 参数类型 $1
我经历了许多类似的案例,但无法让这个查询在这个或类似的变体中工作。
表创建语句:
create table objects
(
key varchar(256),
tenant varchar(256),
metadata jsonb,
data jsonb
);
任何想法我做错了什么?
我尝试过的其他变体(这次是可分页对象):
@Query(value = "SELECT * FROM objects WHERE metadata @> jsonb_build_object(\\'tenant\\', ?1 , \\'objectType\\', ?2) ORDER BY ?#{#pageable}",
countQuery = "SELECT count(*) FROM objects WHERE metadata->>\\'tenant\\' = ?1 and metadata->>\\'objectType\\' = ?2",
nativeQuery = true)
Page<OSObject> findAllBy(String tenant, String objectType, Pageable pageable);
这会导致: org.hibernate.exception.SQLGrammarException:无法提取结果集
我还在黑暗中......
【问题讨论】:
-
我尝试过的其他变体:
标签: java spring postgresql spring-data-jpa native