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 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘