manjuhaha 2009-04-15 16:16
浏览 240
已采纳

javassist hibernate 应用问题

需求:
1、当服务启动时,根据hbm.xml动态创建相应的pojo,并不是生成.java或.class,是用javassist动态创建的。(已经完成)
2、根据前台请求,先修改对应的hbm.xml,用的是dom4j,然后动态去修改前面动态生成的pojo,这个也是用javassist改的,但是在修改的最后,toClass()的时候抛出异常,说是存在同一个类。这时候我就没有继续toClass(),然后用ClassPool获得了修改后的pojo,检测了一下修改的情况,确实是修改好了,添加上了该添加的字段。这时候,相应的hbm.xml和pojo都已经修改好了,按说如果我重新rebuildsession后,再用hql查询这个pojo的话,对应动态添加的这个字段应该是null。
这时候问题出现了:
我查询出的pojo仍然是以前未修改的那个,新生成的字段并没有出现。并且我在hibernate.cfg.xml里面配置了update,按道理数据库的表中也应该自动生成相应的字段,这时候也没有生成。

我分析是我动态修改的类没有和session再次绑定,所以session里面还是以前的那个类;第二,数据库表没有生成相应的字段,就是因为configuration.configure(filename)好像带了缓存,它根本就不读修改后的hbm.xml(这个我做了个实验,在运行时我把hbm.xml删了,可是没反应)。
我想不出办法解决,请诸位帮忙,谢谢!

  • 写回答

1条回答 默认 最新

  • johnhan2012 2009-04-16 00:06
    关注

    你在POJO对应的hbm.xml的class标签中加入catalog属性再试试,
    catalog的值是你数据库名称。
    eg:

    ……
    ……

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable