2017-12-27 16:10
@独自等待遗梦 QuartzPlugin 类中 定义了 静态的 private static Scheduler scheduler;后面的startJobs()中给它赋值了。
2017-05-23 14:03
@独自等待遗梦
看下加载插件的方式对不对。
public boolean start() {
loadJobsFromProperties();
startJobs();
return true;
}
尤其是startJobs() 方式是否执行了。
另外该插件适配于jfinal2.2,更高版本的未经测试。
2017-02-16 20:20
@JFinal 噢~~,也对。可我相信大多数人第一印象就是,我又该怎么去排序?而且有了历史代码,有了历史数据库类型,历史表结构。
我习惯在用findById的时候直接去看数据库里面的主键 顺序,而不是在返回到config mapping里面看。(不知道其他人)
2017-02-16 19:24
@JFinal 总会有些取舍的。
1.
假如我在
_MappingKit.mapping(arp);
后面再
arp.setPrimaryKey("table", "id1, id2");
那就要把N个变动的表都写设置一次。
2.
创建自己的MytaBuilder ,自己实现排序。此方法还是依赖JDBC。既然JDCB提供的getPrimaryKeys有问题,那不如就直接改它。
3.
至于这个建表语句被改,这就属于极端了。导出的表结构谁会没事改动顺序?而且我们开发人员写sql的时候也会看表结构,按表别结构中主键的顺序去写findById的参数,Generator 只需要按照顺序生成即可。
2017-02-16 16:47
@JFinal
为了保持一致性,我们以数据库主键顺序为准。
而MysqlJDBC 中 DatabaseMetaData 中getPrimaryKeys() 存取数据是用的TreeMap,而TreeMap如不指定排序器,默认将按照key值进行升序排序,不按照主键顺序排序,所以导致主键顺序错误!
于是,改mysql驱动源码中的DatabaseMetaData 类,然后用LinkedHashMap!
2017-02-16 14:54
@JFinal 针对新的model是可以的。但是已经有十几个类的复合主键的顺序错乱了。只能这样改一改了。以后可不能随便切换数据库了。
问题解决了,谢谢了。
2017-02-15 22:56
@JFinal MysqlJDBC 中 DatabaseMetaData 中getPrimaryKeys() 并非是按照首字母排序,而是取决于TreeMap、
2017-02-15 22:43
是JDBC的问题,mysql jdbc中DatabaseMetaData.getPrimaryKeys默认按照主键名字首字母排序的,并不是按照主键顺序排序。@JFinal
2017-02-15 21:54
@JFinal 按照您第一条回复那样,确实可以解决问题,但是每次新建一个双主键的model 都需要修改config,失去了原来自动生成的意义了。
2017-02-15 21:51
@JFinal 我更新了一下问题,把图片上传上去了。第一个为自动生成的Mapping,第二个为数据库主键顺序。
偏偏就是反了。
哦,对了,我这是库之前是sqlite,没问题。
然后换到mysql,就有问题了
2017-02-15 20:42
@JFinal 不不不,您理解错了,我说的是MetaBuilder 中的 buildPrimaryKey() 方法