完全错误:
org.springframework.beans.factory.BeanCreationException:创建名为'transactionManagerPostProcessor'的bean时出错:bean的初始化失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'transactionManager'的bean时出错:在设置bean属性'sessionFactory'时无法解析对bean'sessionFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'sessionFactory'的bean时出错:init方法的调用失败;嵌套异常是org.hibernate.MappingException:关联引用未映射的类: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 :(得分:1)
我发现如果没有初始化,Groovy会初始化对象。例如,List<File> files
编译为List<File> files = new List<File>();
。所以,我将类型更改为LinkedList
,一切正常。