// Composite Primary Key order: USER_ID,USER_ID arp.addMapping("F_TL_USER", "USER_ID,USER_ID", TlUser.class);
user_id出现两次,好多表都是这样的,刚开始问题不大,随着开发进度加深,数据表也越来越多,然后好多表_MappingKit都出现了问题,每次都需要手动删除重复的主键或者多余的没有的主键,比如,莫名其妙的多了主键ID。oracle版本11.2.0.1.0 ,暂时没找到原因和解决方法,不知道有没有人知道怎么解决,求告知,谢谢!
/**
* JFinal自带的MappingKitGenerator,当一个库下有多个用户,表结构相同时,生成的主键也会重复(比如资源测试环境有resxj30和resxj30a)
*
*/
public class ResMappingKitGenerator extends MappingKitGenerator {
protected String mappingNoPkMethodContentTemplate
= "\t\tarp.addMapping(\"%s\", %s.class);%n";
public ResMappingKitGenerator(String mappingKitPackageName, String mappingKitOutputDir) {
super(mappingKitPackageName, mappingKitOutputDir);
}
@Override
protected void genMappingMethod(List tableMetas, StringBuilder ret) {
ret.append(String.format(mappingMethodDefineTemplate));
for (TableMeta tableMeta : tableMetas) {
boolean isCompositPrimaryKey = tableMeta.primaryKey.contains(",");
if (isCompositPrimaryKey) {
String[] pks = tableMeta.primaryKey.split(",");
Set set = new TreeSet();
set.addAll(Arrays.asList(pks));
String rmRepeatPks = "";
for (String pk : set) {
rmRepeatPks += "," + pk;
}
tableMeta.primaryKey = rmRepeatPks.substring(1);
if (set.size() > 1) {
ret.append(String.format(compositeKeyTemplate, tableMeta.primaryKey));
}
}
String add;
if (StrKit.isBlank(tableMeta.primaryKey)) {
add = String.format(mappingNoPkMethodContentTemplate, tableMeta.name, tableMeta.modelName);
} else {
add = String.format(mappingMethodContentTemplate, tableMeta.name, tableMeta.primaryKey, tableMeta.modelName);
}
ret.append(add);
}
ret.append(String.format("\t}%n"));
}
}
不过这个代码再jfinal3.3下已经编译报错了。。