使用该类
com.jfinal.plugin.activerecord.generator.Generator
自动生成数据库映射的时候,双主键的表结构遇到了一些问题。
com.jfinal.plugin.activerecord.generator.MetaBuilder =>buildPrimaryKey()
方法拼接的主键与数据主键顺序不符。
如数据库双主键为:id1,id2
但生成的映射却为:id2,id1
原来是MysqlJDBC 中 DatabaseMetaData 中getPrimaryKeys() 存取数据是用的TreeMap,而TreeMap如不指定排序器,默认将按照key值进行升序排序,所以导致主键顺序错误!MDZZ!
改源码!用LinkedHashMap!
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
_MappingKit.mapping(arp);
// 强制指定复合主键的次序,避免不同的开发环境生成在 _MappingKit 中的复合主键次序不相同
arp.setPrimaryKey("document", "mainMenu, subMenu");
me.add(arp);
以上的 arp.setPrimaryKey(...) 这么代码,就是在 _MappingKit.mapping(...) 调用之后,再次强制指定复合主键的次序,这样就万无一失了