2016-01-15 42 views
2

当一个子类被重载GORM继承导致DuplicateMappingException

package test 
class Test { 

    Integer amount 

    //static mapping = { 
    // tablePerHierarchy true 
    // autoImport false 
    //} 
} 

package test 
class Test1 extends Test{ 
    String cardNumber 
} 

父类被重载后,将创建新表的子类我的webapp的奇怪行为

new table

但是Grails的控制台抛出错误,如果我重装子类

ERROR org.grails.plugins.AbstractGrailsPluginManager - Plugin [domainClass:3.0.9] could not reload changes to file [/home/gkiko/workspace/test/grails-app/domain/test/Test1.groovy]: Error creating bean with name 'org.grails.internal.SESSION_FACTORY_HOLDER-reloaded': Cannot create inner bean '(inner bean)#d22a35c' of type [org.grails.orm.hibernate.ConfigurableLocalSessionFactoryBean] while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#d22a35c': Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: Duplicate class/entity mapping test.Test1 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.grails.internal.SESSION_FACTORY_HOLDER-reloaded': Cannot create inner bean '(inner bean)#d22a35c' of type [org.grails.orm.hibernate.ConfigurableLocalSessionFactoryBean] while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#d22a35c': Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: Duplicate class/entity mapping test.Test1 
.... some more stacktrace 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#d22a35c': Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: Duplicate class/entity mapping test.Test1 

我该如何解决这一问题?

  • Grails的版本:3.0.11
  • Groovy的版本:2.4.5
  • JVM版本:1.7.0_91

回答

1

如果您正在为您的域名进行任何更改,应重新启动应用程序类。尽管在修改父类时它工作正常,但动态域实体创建功能仍然无法正常工作。

+0

清除数据库架构并重新启动应用程序将无济于事 – gkiko

+0

你试过了吗?这是将域更改可靠地引入Grails应用程序的唯一方法。 –

+0

@SteveHole是的,我做到了 – gkiko