2016-10-28 41 views
0

我将我的grails项目从2.4.4迁移到3.2.0。所以我也将我的gorm-mongodb插件迁移到6.0.0。以前版本的mongo i 2.4.12和当前版本是3.2.7。在grails中从mongodb 2.4.12迁移到3.2.7的例外

当我将mongo版本从2.4.12迁移到3.2.7时,在我的域类中发生异常。

我有两个领域类:

class ABC implements Comparable, Serializable, Validateable { 
static mapWith = "mongo" 

ObjectId id 
String name 
String value 
App app 

static constraints = { 
    app nullable: false 
    name nullable: false 
    value nullable: false 
} 

static mapping = { 
    app reference:true 
} 

public int compareTo(Object obj) { 
    if(obj && obj instanceof ABC) { 
     if (this.name) { 
      this.name.compareTo(obj.name) 
     } else { 
      return 1 
     } 
    } else { 
     return 1 
    } 
} 
} 

和其他领域类:发生

class App implements Comparable, Serializable { 
static mapWith = "mongo" 
ObjectId id 
// Double average 
String type // design/operating 

static transients = ["name"] 

@Override 
public int compareTo(Object o) { 
    if (o && o instanceof App) { 
     return this.name?.compareTo(o.name) 
    } else { 
     return 1 
    } 
} 
} 

例外:

Failed to convert property value of type [com.test.Application] to required type [com.test.domain.mongo.App] for property 'app'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.test.Application] to required type [com.test.core.domain.mongo.App] for property 'app': no matching editors or conversion strategy found 
    at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:591) 
    at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:603) 
    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:216) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1527) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1486) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1226) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:385) 
    at org.grails.spring.beans.factory.OptimizedAutowireCapableBeanFactory.autowireBeanProperties(OptimizedAutowireCapableBeanFactory.java:130) 
    at org.grails.plugins.web.controllers.api.ControllersDomainBindingApi.autowire(ControllersDomainBindingApi.java:97) 
    at org.grails.plugins.web.controllers.api.ControllersDomainBindingApi.initialize(ControllersDomainBindingApi.java:52) 
    at com.test.core.domain.mongo.ABC.<init>(ABC.groovy) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:239) 
    at BootStrap$_closure1.doCall(BootStrap.groovy:67) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1089) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024) 
    at groovy.lang.Closure.call(Closure.java:414) 
    at groovy.lang.Closure.call(Closure.java:408) 
    at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:516) 
    at grails.util.Environment.executeForEnvironment(Environment.java:509) 
    at grails.util.Environment.executeForCurrentEnvironment(Environment.java:485) 
    at org.grails.web.servlet.boostrap.DefaultGrailsBootstrapClass.callInit(DefaultGrailsBootstrapClass.java:62) 
    at org.grails.web.servlet.context.GrailsConfigUtils.executeGrailsBootstraps(GrailsConfigUtils.java:65) 
    at org.grails.plugins.web.servlet.context.BootStrapClassRunner.onStartup(BootStrapClassRunner.groovy:53) 
    at grails.boot.config.GrailsApplicationPostProcessor.onApplicationEvent(GrailsApplicationPostProcessor.groovy:252) 
    at grails.boot.config.GrailsApplicationPostProcessor.onApplicationEvent(GrailsApplicationPostProcessor.groovy) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:382) 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:336) 
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:877) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:313) 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:55) 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:374) 
    at grails.boot.GrailsApp.run(GrailsApp.groovy:363) 
    at grails.boot.GrailsApp$run.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133) 
    at com.test.Application.main(Application.groovy:10) 
Caused by: java.lang.IllegalStateException: Cannot convert value of type [com.test.Application] to required type [com.test.core.domain.mongo.App] for property 'app': no matching editors or conversion strategy found 
    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:306) 
    at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:576) 
    ... 59 common frames omitted 

回答

1

您的应用程序的自动装配冲突。我建议完全禁用自动装配,因为它实际上对性能不利。将下面的配置,grails-app/conf/application.groovy

grails.gorm.autowire = false 
grails.gorm.default.mapping = { 
    autowire false 
} 

无论是或删除您一定是什么地方注册的app豆。

+0

嗨@Graeme Rocher,我面临的问题这个http://stackoverflow.com/questions/40214348/broken-pipe-exception-on-grails-app/40215198?noredirect=1#comment67775814_40215198你能帮我解决这个问题。提前致谢。 –

+0

如果您收到该例外情况,那么该错误属于错误配置的连接池。配置它正确,问题将得到解决 –

+0

谢谢你的帮助@Graeme Rocher你可以添加解决方案的问题,这是一个简单的请求给你,谢谢请...... –