postgresql 如何从JPA本地查询中调用以BIGINT[]为参数的postgres函数

nlejzf6q  于 5个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(69)

我试图从Java中的JPA原生查询中调用具有以下签名的函数,但由于各种原因,所有尝试都失败了:
签名:

CREATE FUNCTION public.func_anonymize_business(business_ids BIGINT[])...

字符串
我尝试了以下方法:

@Query(nativeQuery = true, value = "SELECT * FROM public.func_anonymize_business(?1)")
  void deactivateAndAnonymizeBusiness(List<Long> businessIds);


服务项目:

ArrayList<Long> ids = new ArrayList<>();
  ids.add(businessId);
  businessRepository.deactivateAndAnonymizeBusiness(ids);


这给出了错误:

ERROR: function public.func_anonymize_business(bigint) does not exist


以及:

@Query(nativeQuery = true, value = "SELECT * FROM public.func_anonymize_business(?1)")
  void deactivateAndAnonymizeBusiness(Long[] businessId);


服务项目:

Long[] ids = {requesterId}; 
  businessRepository.deactivateAndAnonymizeBusiness(ids);


这给出了错误:

ERROR: function public.func_anonymize_business(bytea) does not exist


以及其他一些解决方案,但所有的错误,任何想法如何正确调用这个?请注意,我可以从终端调用函数没有问题使用psql。
我怎么才能让它工作?

txu3uszq

txu3uszq1#

你有没有试过下面的:

private EntityManager entityManager; //Declare this in constructor
String queryString = "SELECT public.func.anonymize_business(:businessIds)";
Query query = entityManager.createNativeQuery(queryString);
query.setParameter("businessIds", businessIds);
Object result = query.getSingleResult();
sout(result);

字符串

相关问题