项目中需要用到动态加载dao,已经实现。但是目前的问题是:加载之后,pojo改变后需要再次重新加载或刷新这个对应的dao。代码如下:public void addPersistentClass(Class clazz) throws Exception{
SessionFactory sessionFactory = (SessionFactory) RuntimeAction.getBean("sessionFactory");
AnnotationSessionFactoryBean localSessionFactory = (AnnotationSessionFactoryBean) RuntimeAction.getBean("&sessionFactory");
// 从localSessionFactory拿到配置信息Configuration ,并且增加HBM映射文件到Configuration
AnnotationConfiguration config = (AnnotationConfiguration) localSessionFactory.getConfiguration();
// try {
//判断是否已经加入。
if(config.getClassMapping(clazz.getName())== null){
config.addAnnotatedClass(clazz);
}
config.buildMappings();
// } catch (MappingException e) {
// throw new MappingException(e);
// }
Settings settings = ((SessionFactoryImplementor) sessionFactory).getSettings();
System.out.println("开始建表");
new SchemaUpdate(config, settings).execute(true, true);
System.out.println("建表完成");
// SessionHolder
PersistentClass model = config.getClassMapping(clazz.getName());
((SessionFactoryImpl) sessionFactory).addPersistentClass(model,((Configuration) config).getMapping());
}
我以为config.buildMappings();是重新加载dao内容,但是我试过了,新改变了的pojo没有被重新加载,也即还是原来没有改变的。但是如果是新建的才可以被加进来。我对这个不熟悉,所以请哪位能告知如何做?不胜感激。