NutzCN Logo
问答 dao拦截器,怎么修改拦截的更新语句的某个字段的值。
发布于 2411天前 作者 Rory 2286 次浏览 复制 上一个帖子 下一个帖子
标签:

(我想实现拦截所有更新语句,然后自动补充上updateDateTime(当前时间)和updateBy(当前用户),由于实体中包含了这两个字段,所以我下面的操作会导致执行更新操作时的出现列重复),请问下有什么办法可以实现吗)

 if (st.isUpdate() && st instanceof NutPojo) {
        	NutPojo np = (NutPojo) st;
			List<PItem> items = null;
			try {
				items = (ArrayList<PItem>) itemField.get(np);
				for (int i = 0; i < items.size(); i++) {
					if (items.get(i) instanceof UpdateFieldsPItem) {
						String uname = null;
						Subject subject = SecurityUtils.getSubject();
						if (subject != null) {
							uname = (String) subject.getSession().getAttribute(UserName.SessionUserName);
						}
						items.add(i + 1, new Static(
								", updatetime = SYSDATE, updateby = " + ((null == uname) ? null : "'" + uname + "'")));
						
						break;
					}
				}
15 回复

额,那得修改UpdateFieldsPItem的_mfs属性了

提供一套api替换正在执行DaoStatment,是不是更方便一些

嗯,谢谢了,我在看看,能不能在更新的时候忽略掉这实体中这两个字段,在用上面的方式加进来,这样应该不会出现重复列

请问下,dao拦截器中可以过滤字段吗

那你可能需要替换items里面的UpdateFieldsPItem实例了,替换成一个新的UpdateFieldsPItem

嗯嗯,谢谢,我正在做尝试,有点摸不着头脑

恩, 是有点纠结

为什么items里的UpdateFieldsPItem又嵌着items,然后又嵌着UpdateFieldsPItem,无穷无尽的样子,这几天一直纠结怎么在拦截器中过滤掉字段,直接在字段上加锁也不行,现在有点懵

UpdateFieldsPItem套items?没有吧

或者换个思路, 替换DaoStatment

说错是items里的UpdateFieldsPItem嵌pojo,pojo嵌items,这样的循环往复

是UpdateFieldsPItem里面的mfs吧?

嗯,我调试的时候点开好几层,有点懵,有什么可以参考的例子吗

很遗憾... 没有... 要不你先报个issue吧

嗯嗯,谢谢大神了,我报了

添加回复
请先登陆
回到顶部