//假设user表只存在uname和pwd,通过脚本生成model之后,根据业务需求创建了一个视图view_user,其中会带有othercol //此时如果使用如下方法 List<User> users = User.dao.find("select u.uname,u.pwd,u.othercol from view_user u "); //这样获取到的List<User> users 中的每个user会存在othercol 属性? //使用Db.batchSave(users ,users.size() ) 方法保存时 会报错 com.jfinal.plugin.activerecord.ActiveRecordException: com.microsoft.sqlserver.jdbc.SQLServerException: The index 9 is out of range. at com.jfinal.plugin.activerecord.DbPro.batch(DbPro.java:1149) at com.jfinal.plugin.activerecord.DbPro.batchSave(DbPro.java:1249)
请教各位朋友这样是正常的吗?如何将返回的user只保留model中的那些字段(即uname,pwd)?
项目:JFinal
2:返回的user只保留model中的那些字段,这个model中有方法的:
keep(String attr) //保留
keep(String... attrs)//保留多个
remove(String attr)//移出不要的
remove(String... attrs)//移出多个不要的
List需要遍历处理。可自建一个小工具类,进行批量处理。
3:batchSave时报错,这个是业务代码中有错误用法了,batchSave前肯定操作了model,
对本次返回的model操作时不能全部用set,因为你这里有部分字段并非user表的,
需要使用setOrPut(String attrOrNot, Object value),这个里面会自动判断是否需要写库。同时要注意batchSave会取第一条的set过的字段作为拼接SQL的字段,所以本次list中的model都需要是同样字段的操作,不然执行结果并非你想象的样子。