JFinal异常:The Table mapping of model not exists

发布于 2021-11-29 18:36:55 字数 951 浏览 650 评论 6

@JFinal 你好,想跟你请教个问题:

我在执行一个定时任务的时候,需要对Model对象进行插入记录的操作,但是出现以下错误:

Exception in thread "Timer-0" java.lang.RuntimeException: The Table mapping of model: com.xxx.xxx.model.Change not exists. Please add mapping to ActiveRecordPlugin: activeRecordPlugin.addMapping(tableName, YourModel.class).

然后debug到下面这段代码

public Table getTable(Class<? extends Model> modelClass) {
Table table = modelToTableMap.get(modelClass);
if (table == null)
throw new RuntimeException("The Table mapping of model: " + modelClass.getName() + " not exists. Please add mapping to ActiveRecordPlugin: activeRecordPlugin.addMapping(tableName, YourModel.class).");

return table;
}

发现modelToTableMap里面,明明是有modelClass这个名字的键值对,但是get到的确实null。我程序的另一部分是通过页面去添加Model的一条记录,但是却成功。请问这是什么原因,我已经百度了大半天了,还是解决不了,谢谢了~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

酒几许 2021-11-30 18:06:05

但是,我另一个model也是在这个定时任务里面,它却可以get得到Map里面的key。而且,定时任务是在config启动之后才执行的。

浅沫记忆 2021-11-30 18:04:39

回复
跟踪一下ActiveRecordPlugin 的初始化程序,看一下 Model 是否真的被映射过

陌若浮生 2021-11-30 18:04:17

回复
嗯,启动过程正常,Model的确在modelToTableMap里面,但是就是无法获取得到相应的table。

少女净妖师 2021-11-30 17:21:58

回复
检查一下编译输出 classes 文件的路径是否指向的 WEB-INF/classes,否则系统启动时用的是其它目录的 class 文件,而运行中途使用了 WEB-INF/classes 下的 class 文件,这样就造成了类型不匹配,得不到想要的结果,这种情况通常是肉眼看不出来的

兮颜 2021-11-30 14:52:49

回复
我的配置也是正常的,但是发现了新的现象:http://www.oschina.net/question/asked?id=2132322

深巷少女 2021-11-30 13:34:32

   这个定时任务的启动时机是否在 ActiveRecordPlugin 之前,如果是在之前,则当时是获取不到的。建议将定时任务放在 YourJFinalConfig.afterJFinalStart() 方法之中

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文