由 hibernate 为不带括号的数组生成代码

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

我创建了一个方法

@Query(nativeQuery = true, value = "SELECT * FROM public.product WHERE concat(reg_id, inn, kpp, country) " + "alc_volume) ILIKE %?1% ORDER BY array_position(array[?2], id)")

List<Product> searchByPatternOrderId(String pattern, Set<Long> ids, Pageable pageable);

hibernate 生成了代码

SELECT * FROM public.product 
WHERE concat(reg_id, inn, kpp, country) ILIKE ? 
ORDER BY array_position(array[(?, ?, ?)], id) limit ? offset ?

postgresql 返回语法错误。

  1. 我需要做什么才能使休眠不为数组生成括号?
  2. 是否可以在任何地方禁用括号?
java spring postgresql hibernate jpa
1个回答
0
投票

我今天遇到了同样的问题,虽然我没有找到删除Paranetheses的方法,但我找到了一个解决方法,可以解决我的问题。
我没有传递

Collection
参数,而是传递了 CSV 字符串。
在我的用例中,我需要一个字符串数组,所以这有效......
我将
array[?1]
替换为
string_to_array(?1, ',')

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