代码热更新Model Cache 类型转化失败

公司自有平台(非web平台),有代码热更新机制,目前使用Ehcache 做缓存,缓存model (Teller)如下:

public class Teller extends Model<Teller> {

    /**
     *
     */
    private static final long serialVersionUID = 8675422496633387615L;
    
    public static final Teller dao = new Teller();

}

以下通过model 访问数据库,访问缓存:

 public void logTellerInfo(){
        
        final Teller teller = Teller.dao.findById("1");
        Logger.info("--------------------%s", teller.get("teller_name"));
        Teller teller2 = Teller.dao.findFirstByCache("routerTable", "key1", "select * from teller_info");
        Logger.info("-----++++++++----%s", teller2.get("teller_name"));
   }


在上面代码通过 Teller.dao.findFirstByCache获取缓存model数据,平台启动时执行不会报错,当部署jar到平台时执行代码热部署后,调用 logTellerInfo 方法出现类型转换错误,具体如下:

[19:45:46.744][E]ERROR TYPE:[E],ERROR CODE:[ACMP0E001],ERROR MESSAGE:[java.lang.ClassCastException: tc.UPPS.HKCheque.model.Teller cannot be cast to tc.platform.plugin.activerecord.Model]
[19:45:46.745][E]java.lang.ClassCastException: tc.UPPS.HKCheque.model.Teller cannot be cast to tc.platform.plugin.activerecord.Model
    at tc.platform.plugin.activerecord.Model.findFirstByCache(Model.java:847)
    at tc.platform.plugin.activerecord.Model.findFirstByCache(Model.java:859)


明明  Teller 派生于 activerecord.Model,怎么会转换不了呢?我用得JFinal 把呢本是 2.3 版,恳请大家帮忙看下会是什么可能原因导致的。



评论区

热门反馈

扫码入社