jfinal 自动生成的映射文件mappingkit里,视图没有primaryKey,导致启动报错
jfinal2.2 框架下,使用generator自动生成model,mappingkit文件里生成的语句是类似下面这样的,但是没办法启动,因为第二个参数是主键,视图CV_VEHICLE因为没有主键,报错java.lang.IllegalArgumentException: Primary key can not be blank
arp.addMapping("CV_VEHICLE", "", CvVehicle.class);
现在我的解决办法是手动把所有视图的第二个参数去掉,变成 arp.addMapping("CV_VEHICLE", CvVehicle.class);
可这样每次重新生成都得去修改一遍很是麻烦,请教各位大神,除了改generator源码以外有没有什么办法解决????
====================
另外修改源码的办法,我在源码MappingKitGenerator类中找到这一节
protected void genMappingMethod(List<TableMeta> tableMetas, StringBuilder ret) {
ret.append(String.format(this.mappingMethodDefineTemplate));
Iterator i$ = tableMetas.iterator();
while(i$.hasNext()) {
TableMeta tableMeta = (TableMeta)i$.next();
boolean isCompositPrimaryKey = tableMeta.primaryKey.contains(",");
if (isCompositPrimaryKey) {
ret.append(String.format(this.compositeKeyTemplate, tableMeta.primaryKey));
}
//就是这一句在拼addMapping语句,表名,主键,model类
String add = String.format(this.mappingMethodContentTemplate, tableMeta.name, tableMeta.primaryKey, tableMeta.modelName);
ret.append(add);
}
ret.append(String.format("\t}%n"));
}
我想问的是这玩意里该如何判断是视图还是表?
还是只能在命名的时候用前缀区分表和视图,可是这样用在不同前缀的数据库时就又要改源码了,刚接触这个jfinal,也不知道说清楚没有,我也是很纠结啊。。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
扩展自定义 MetaBuilder
主要是修改build() 方法,增加一个规则,如果没有主键,就使用
`/**
`