参照前面的文章
不过以前的文章无法适用于修改的情况,比如我生成 了一个类,但我修改了类属性又重新生成,怎么办?因为在classloader已经载入这个类的情况下,你重写了这个class文件
然后再通过classloader.loadClass 来重新加载这个类,是无效的,classloader会认为是重复的导入
解决方案是直接告诉hibernate,修改后的class是个什么样子的
参照前面文章的测试代码
POBuildUtil util = new POBuildUtil();
util.build(rc.getClassName(),"E:\\cpc\\source\\cooperateCore\\com\\mit\\test\\Person.class",list);
//实例化一个person
Object person = Class.forName("com.mit.test.Person").newInstance();//hbmcls.newInstance();
//开始生成hbm.xml
FreemarkerRender render = new FreemarkerRender();
render.render(rc, Templates.TEMPLATE_HIBERNATE3, "E:\\cpc\\source\\cooperateCore\\com\\mit\\test\\person.hbm.xml");
URL url = this.getClass().getResource("/com/mit/test/person.hbm.xml");
config.addURL(url);
//更新hibernate.cfg.xml
HibernateUtil.updateHbmCfg( this.getClass().getResource("/com/mit/cooperate/core/hibernate/hibernate.cfg.xml"), "com/mit/test/person.hbm.xml");
util.build(rc.getClassName(),"E:\\cpc\\source\\cooperateCore\\com\\mit\\test\\Person.class",list);
上面这一段实际是返回了一个class的,这个class就是最后的class结果,我们要防止hibernate自己通过Thread.currentThread().getContextClassLoader() 或则class.forName
来获取更新的class(因为这个做法是无效的),那么唯一的办法就是把更新后的classs设置给他
Class cls = util.build(rc.getClassName(),"E:\\cpc\\source\\cooperateCore\\com\\mit\\test\\Person.class",list);
.....
getConfig().addURL(url);
HibernateUtil.updateHbmCfg(cfgfile, hbmurl);
PersistentClass model = config.getClassMapping(cls.getClassName());
model.setClassName(ns.getClass().getName());
model.setProxyInterfaceName(ns.getClass().getName());
model.setEntityClass(cls );
通过设置 PersistentClass 的EntityClass属性就可以达到这个目的
PersistentClass 中代码如下
public void setEntityClass(Class arg)
{
this.objClass = arg;
}
分享到:
相关推荐
国网计量中心发布的用电信息采集远程及本地通信单元全性能试验检测公告第6号补遗,涉及了用电信息采集系统的通信单元技术规范、通信协议标准和测试方法等多个方面。这些内容详细规定了宽带载波通信单元和微功率无线...
关于第一批送样检测的两种智能电能表继续送样公告第2号补遗(2010-01-18) 为规范送检电能表通信规约及安全认证的相关内容,特作出如下规范。送检电能表需按照(略)
为提高GPS数据的有效性与可靠性,使之为实现实时交通流量预测与交通诱导服务,首先基于GPS历史数据,以变异系数极小化为优化目标进行GPS数据过滤模型的优选,并对实时数据缺损提出两种补遗算法;然后给出基于动态GPS...
《基于GPS实时数据的在线过滤与补遗研究》是一篇探讨如何提高GPS数据质量和可靠性的学术论文。文章主要关注在智能运输系统(ITS)中,如何利用GPS数据进行实时交通流量预测和交通诱导服务。作者包括米葛晓锋、曹斌、...
### 电科院资料补遗文件关键知识点解析 #### 一、背景介绍 - **文件来源**:国网计量中心发布的一份关于电能表全性能试验检测的补遗公告,时间为2014年。 - **主要内容**:针对最新的国家标准和技术要求,对智能...
本文档是对《一个完整的安装程序实例—艾泽拉斯之海洋女神出品》的补充说明,主要针对安装程序完成后遇到的应用程序运行时的小问题进行了解决方案的阐述。这些解决方案主要是通过在安装过程中传递参数和设置环境变量...
Symantec Backup Exec 2012 SP2 管理指南补遗 Symantec Backup Exec 2012 SP2 管理指南补遗是一份详细的管理指南,旨在帮助用户更好地使用 Symantec Backup Exec 2012 SP2 软件。该指南包含了对 Symantec Backup ...
**jQueryformValidator**的出现旨在解决这一问题,它通过提供一系列预设的验证规则和高度可定制的选项,使得表单验证变得更加简单高效。 #### 二、jQueryformValidator能做什么,不能做什么? **...
《珍珠囊补遗药性赋》是一份元代医学文献,由李东垣撰写,主要阐述了中药的药性和用途。这份文档分为三个卷,详细介绍了各类药物的性质、功效和适用症,对于理解中药的特性及其在治疗疾病中的作用具有重要价值。 ...
专业技能字典市场研究补遗.doc
本案例提供的压缩包"商业编程-源码-本代码是《自绘按钮补遗》一文的配套源代码.zip",其内容是与一篇名为《自绘按钮补遗》的技术文章紧密相关的,这篇文章可能是对如何自定义绘制按钮及其补充细节的深入探讨。...
二实用计算机软硬件知识补遗PPT课件.ppt
总的来说,这份压缩包中的学习笔记可能涵盖TCP/IP协议的基本原理、编程接口的使用、实际问题的解决方案等内容,对于商业编程者来说是一份宝贵的资源。通过学习,不仅可以提升技术能力,还能更好地解决实际工作中遇到...
【清除MY123重点补遗】主要涉及的是如何处理MY123这一类的恶意程序,这是一种典型的明星级流氓程序,对用户的计算机系统安全构成威胁。MY123不仅难以卸载,还具备自我复制和恢复的能力,使得常规的删除方法往往无效...
这一过程中,企业需充分考虑各项工作的工程量、单价、合价等因素,同时对于可能存在的风险和挑战做出合理预判和预备方案。 最后,从这份招标补遗文件我们可以看出,水利工程在面对实际情况的变更时,需要做出及时、...
银行业务与信息化系统分析补遗可用 本文对银行业务与信息化系统进行了全面的分析和补遗,涵盖了银行业务发展动态、银行IT系统、银行业务系统、管理信息系统等方面的知识点。 银行业务发展动态 银行业务发展动态是...
在深入了解“9930写号教程----总结补遗”之前,需掌握以下基础概念: - **EVDO**(Evolution-Data Optimized):一种3G无线宽带网络技术,用于高速数据传输,常用于黑莓等智能设备。 - **写号**:指的是将运营商...
银行业务与信息化系统分析补遗.pdf 本资源是一个关于银行业务和信息化系统的分析补遗文档,涵盖银行业务的各个方面,包括银行业发展动态、银行中间业务、银行IT系统、银行业务系统、管理信息系统等。下面是本资源的...
《TCP/IP学习笔记补遗》是对TCP/IP协议族的深入理解和实践后的补充材料,旨在帮助读者更好地理解这个复杂的通信协议体系。TCP/IP是互联网的基础,它由四个主要层次构成:应用层、传输层、网络层和数据链路层。下面...