Java Spring Boot Jpa。从自定义功能中选择

问题描述 投票:0回答:1

我有一项带有 Jpa r2dbc 存储库的服务和一种方法。此方法应返回自定义 SQL 函数(而不是表)中的选择。当应用程序使用该方法时,我遇到错误。

具有方法的存储库:

public interface VirtualAuthorityRepository extends ReactiveCrudRepository<VirtualAuthority, Long> {

    @Query("SELECT ... FROM get_valid_virtual_relations(: accountId)")
    Flux<VirtualAuthority> getVirtualAuthority(@NonNull Long accountId);
}

get_valid_virtual_relations 函数示例

create function get_valid_virtual_relations(accountid integer)
    returns TABLE(authority_id integer, expire_at timestamp without time zone)
    language plpgsql
as
$$
BEGIN
    RETURN QUERY SELECT ...;
END;

错误信息:

io.r2dbc.postgresql.QUERY:执行查询:BEGIN READ ONLY io.r2dbc.postgresql.PARAM:将参数 [0] 绑定到:1 io.r2dbc.postgresql.QUERY :执行查询:SELECT * FROM get_valid_virtual_relations($1) io.r2dbc.postgresql.QUERY:执行查询:ROLLBACK c.f.c.e.BaseGrpcExceptionHandler:org.springframework.r2dbc.BadSqlGrammarException:executeMany;错误的 SQL 语法 [SELECT * FROM get_valid_virtual_relations($1)]

java spring spring-boot spring-data-jpa spring-data
1个回答
0
投票

: 和 accountId 之间似乎有空格,这可能会导致 BadSqlGrammarException。删除后尝试类似:

@Query("SELECT * FROM get_valid_virtual_relations(:accountId)")

PS:我没有足够的声誉来发表评论,所以将其添加为答案

© www.soinside.com 2019 - 2024. All rights reserved.