2016-11-30 106 views
0

我们正在升级我们的库,并将Spring从4.2.4升级到4.3.4,并将Spring数据从1.9.2升级到1.10.5。我们还使用Hibernate 5.2.5.Final与MySql DB进行交谈。ConverterNotFoundException将Spring升级到4.3.4后

这样做后,我们得到以下错误的春季转换。

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.javatuples.Pair<?, ?>] to type [my.namespace.Category]

而且它的这个回购通话。

@Query("select new org.javatuples.Pair(cpc.category, count(*)) from UnlinkedProductCategorization cpc where cpc.myField = ?1 group by cpc.category") Collection<Pair<Category,Long>> countByCategoryForContainer(MyFieldType selfContainer);

在此回购没有任何变化,如果我们恢复到一切正常。我们还有其他的情况下,我们使用select new org.javatuples.Pair(someEntityHere, count(*))仍然有效,所以我无法弄清楚为什么升级会打破它。为什么它认为它应该尝试将Pair转换为Category,这实际上没有意义。

这里的调用堆栈只是我们的最后一个方法之后

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [org.javatuples.Pair<?, ?>] to type [com.siftit.domain.core.category.Category] 
    at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:324) 
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:206) 
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:187) 
    at org.springframework.data.repository.query.ResultProcessor$ProjectingConverter.convert(ResultProcessor.java:256) 
    at org.springframework.data.repository.query.ResultProcessor$ChainingConverter$1.convert(ResultProcessor.java:201) 
    at org.springframework.data.repository.query.ResultProcessor$ChainingConverter.convert(ResultProcessor.java:212) 
    at org.springframework.data.repository.query.ResultProcessor.processResult(ResultProcessor.java:149) 
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:121) 
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:106) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:482) 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:460) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:61) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) 
    at com.sun.proxy.$Proxy89.countByCategoryForContainer(Unknown Source) 

回答

0

不能直接回答,但这里有一些事情你应该看看/试试,这是长期的评论:

  1. 你说你有其他方法使用new Pair。那些签名是怎样的?

  2. 设置发生异常的中断点并检查它正在做什么/正在做什么。注意:

    a)也许有通过不同类加载器加载的Pair类或Category类的多个实例。

    B)可能的类型从数据库中得到了什么变化,就像现在越来越BigInts,而不是Long

  3. 隔离问题:直到你得到的东西复制您的项目,删除一切不相关的问题这么小,以至于它可以合理地复制到SO问题中。通常情况下,您会发现问题的方式很长,如果不是,我们会在这里提供帮助。

相关问题