jfinal使用oracle序列nextval的问题

ohaozy 发布于 2014/10/24 22:54
阅读 1K+
收藏 1
jfinal操作oracle数据库时,取序列生成数值:select seq_xx_id.nextval from dual;

波波可能手快了,没有考虑大小写,OracleDialect类里写的是:
if ((value instanceof String) && colName.equalsIgnoreCase(pKey)
&& ((String) value).endsWith(".nextval")) {
temp.append(value);
} else {
temp.append("?");
paras.add(value);
}
如果代码里不小心写成.NEXTVAL,使用jfinal就悲具了....
请波波改一下:
.toLowerCase().endsWith(".nextval")
另外希望能添加 saveBatchModel这样的方法,这是很基本的,虽然有类似的方法,参数却基本是sql语句。
jfinal-ext里的ModelKit带了batchSave方法虽然基本实现了此功能,却一堆错,显然没有好好测试。此问题我单独在另外的地方说一下。

加载中
0
JFinal
JFinal

    ".nextval" 的问题,考虑过大小写的问题,但是如果要先转化为大写或小写,对性能有较大损失,因为被转换的是字段值,而不是字段名,如果某个表里面很多非常大的 string 型字段, toLowerCase() 性能堪忧。倒是可以在手册中强调这里一定要小写,为防止遗忘,刚刚已加修改了 jfinal 1.9 的手册。

    希望添加的 saveBatchModel 是建议添加在哪里? 是 Model 中么? Model 采用了 ActiveRecord 模式,该模式的核心是一个 model 对象对应在数据库中的一条记录,对于 save、update、delete 这种操作,model之上的 api 都是针对于其对象自身的,所以需要在 Db 中实现。

0
ohaozy
ohaozy

nextval问题考虑得有道理。
saveBatchModel 应该在model里加入:saveBatch(List<? extends Model...>),updateBatch(? extends Model)这样的方法,有空请参看一下我对jfinal-ext针对这个问题的讨论:http://www.oschina.net/question/593578_178173

0
s
shylock
saveBatch实现很简单 ,但是batch是有commit的,在参与事务时是个麻烦,不能回滚
返回顶部
顶部