2016-02-23 3 views
0

Полная ошибка:Ошибка создания боб с именем 'transactionManagerPostProcessor': инициализация боба не удалось

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 org.hibernate.MappingException: Association references unmapped class: java.util.List

Вот мои классы Домен:

class File implements Serializable { 

    String path; 
    String name; 

    public File(String path, String name) { 
     this.path = path; 
     this.name = name; 
    } 
} 

class Directory extends File { 

    List files = []; 

    public Directory(String path, String name) { 
     super(path, name); 
    } 
} 

Вот мой DirectoryService:

@Transactional 
class DirectoryService { 

    def fetchDirectory(String path) { 
     java.io.File dir = new Path(path); 
     java.io.File[] files = dir.listFiles(); 

     Directory pdirectory = new Directory(path, dir.getName()); 
     List list = []; 
     for(java.io.File file : files) { 
      File pfile = new File(path, file.getName()); 
      list.add(pfile); 
     } 
     pdirectory.files = list; 
     return pdirectory; 
    } 
} 

Проблема возникает из-за того, что у меня есть класс List files = [] в классе модели каталога.

Я даже не понимаю проблему, чтобы найти решение. Почему Grails не позволяет мне иметь список в моделях? И если это фактически не разрешено, я хочу знать, как заставить его работать.

В моем приложении у меня много моделей с источниками данных, которые не являются базами данных; и в этом случае эквивалент отношения SQL является «Directory hasMany File». Также сама директория является подмножеством файла.

+0

Это работает, если вы не инициализируете список в модели? – shaydel

+1

Вы пытались использовать вместо этого 'static hasMany = [files: File]'? Я думаю, что он должен знать тип домена для коллекции/отношения. –

+0

@shaydel нет, но я нашел решение. – Gasim

ответ

1

Я узнал, что Groovy инициализирует объекты, если нет инициализации. Например, List<File> files компилируется в List<File> files = new List<File>();. Итак, я сменил тип на LinkedList, и все сработало.

Смежные вопросы