为什么JPA/Hibernate会抛掷;java.lang.NegativeArraySizeException:-1;当我尝试运行@Query时?

为什么JPA/Hibernate会抛掷;java.lang.NegativeArraySizeException:-1;当我尝试运行@Query时?,java,hibernate,jpa,spring-data-jpa,Java,Hibernate,Jpa,Spring Data Jpa,我有以下代码 @Query( value = "call schema.pkg.UPDATE(?1)", nativeQuery = true ) void addRecords(String ids); @Autowired MyRepository repo; repo.addRecords(records); 我得到 java.lang.NegativeArraySizeException: -1 at org.hiber

我有以下代码

@Query(
        value = "call schema.pkg.UPDATE(?1)",
        nativeQuery = true
)
void addRecords(String ids);

@Autowired
MyRepository repo;

repo.addRecords(records);
我得到

java.lang.NegativeArraySizeException: -1

    at org.hibernate.loader.custom.ResultRowProcessor.prepareForAutoDiscovery(ResultRowProcessor.java:36)
    at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:489)
    at org.hibernate.loader.Loader.preprocessResultSet(Loader.java:2357)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:2313)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2064)
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2026)
    at org.hibernate.loader.Loader.doQuery(Loader.java:951)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:352)
    at org.hibernate.loader.Loader.doList(Loader.java:2857)
    at org.hibernate.loader.Loader.doList(Loader.java:2839)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2671)
    at org.hibernate.loader.Loader.list(Loader.java:2666)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
    at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2139)
    at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1163)
    at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:173)
    at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1533)
    at org.hibernate.query.internal.AbstractProducedQuery.getSingleResult(AbstractProducedQuery.java:1581)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:409)
    at com.sun.proxy.$Proxy260.getSingleResult(Unknown Source)
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:196)
    at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:88)
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:154)
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:142)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:619)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:606)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:149)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
    at com.sun.proxy.$Proxy217.addRecords(Unknown Source)
我也试过了

@Query(
        value = "call schema.pkg.UPDATE(:ids)",
        nativeQuery = true
)
void addRecords(@Param("ids") String ids);
字符串的示例为
1,2,3,4

更新

存储的进程定义

PROCEDURE UPDATE (    MY_IDS         in varchar2)

您需要使用
@过程
注释:

@Procedure("schema.pkg.UPDATE")
void addRecords(String ids);
编辑(感谢@JGleason)

可能需要命名参数

@Procedure("schma.pkg.UPDATE") 
void addRecords(@Param("MY_IDS") String ids);

请参见什么是
schema.pkg.UPDATE
以及它接受什么?
元数据.getColumnCount()
出于某种原因返回了-1。尝试添加
@修改
注释。看起来效果不错。我在“@NamedStoredProcedureQuery”端做了更多配置,所以可能这就是错误最初的来源。我确实有一个不同的名称(我在问题中没有说),所以我的最终结果是@过程(“schma.pkg.UPDATE”)void addRecords(@Param(“MY_id”)字符串id);不过我注意到了一个问题。它适用于我的单个记录,但不适用于我在手动过程调用中发送的逗号列表。我需要提前做一些逃避吗?如果不查看
schema.pkg.UPDATE
,很难说,您会遇到什么样的错误?非常感谢您的帮助。让我把一些东西放在一起,我将打开另一个问题并在这里ping它