2016-04-25 14 views
2

При попытке выполнить команду grails run-app --stacktrace, Grails бросает эту ошибку:ClassCastException для MappingFactory к ToMany при переносе на Grails 3

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is java.lang.ClassCastException: org.grails.datastore.mapping.model.MappingFactory$10 cannot be cast to org.grails.datastore.mapping.model.types.ToMany 

Я комментировал static hasMany из всех классов доменов, но ошибка все еще сохранялась, пока я не заменил его с hibernate3 в моем build.gradle

Как я могу решить эту проблему с помощью hibernate4?

ответ

0

Я нашел решение, на самом деле оно имело отношение к embedded grails domain property.

+0

Какова проблема? –

+0

Я пришел сюда, задаваясь вопросом то же самое @KevinTan – genuinefafa

0

Как упоминает @deepen, эта ошибка связана с настройкой отображения встроенных классов домена. В моем случае я использовал множественные базы данных (mongodb gorm 6.0.12 + jtds (sql server)), а некоторые из них имели встроенные свойства (определенные в одном классе).

DomainA.groovy 
class DomainA 
    static hasMany = [domainBs: DomainB] 
    static embedded = ['domainBs'] 
    static mapWith = "mongo" 

class DomainB 
    // if embedded: what's the point of this? 
    static belongsTo = [domainB: DomainA] 
    // if i'll use it as embedded, doesn't add nothing 
    static mapWith = "mongo" 

Короче говоря, если я комментирую belongsTo и mapWith в определении вложенного класса, проблема была решена. Если нет, должен запомнить mapWith встроенный класс с тем же источником данных, что и контейнерный класс.