用Spring来开发一个WEb系统。比如:现在实体 Problem,Problem有一下属性:Cateory,Title,description。需求是可以更新Problem的数据库记录,但是,用户可以在页面上看到这个Problem的历史记录,需要看到具体被修改属性的原始值跟新的值。没有好的设计思路。求解。。。
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已采纳
java Web 怎么记录修改的历史(包括字段的原始值和新值)
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
6条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
zuoshang 2013-01-09 15:21关注看到这个需求,我第一反应是设计在java层做更新记录好像更方便。不需要任何其他知识点了。
数据库加[b]一张[/b]表就行,比如名叫record表里面 entry property old new date 类似这么几个字段,java层再加一个这个表对应的实体类Record,并且有一个insert方法
在Problem的update方法里,很容易能获取到这几个值,update成功以后创建一个Record对象insert到表里。 这样做的好处是可以收集任意一个实体类的修改记录,可能有User,Person等等。查询的时候根据entry name这个字段来区分。这样无论多少次修改,都能保存直观的历史记录。
至于这样污染了update的代码,你可以思考下依靠spring的aop编程,比如后置通知之类的,将比较新老值,组装成Record对象等逻辑,分离到一个通用、独立的方法里。其实这一点还是需要思考一下,如果才能更优雅地实现。
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决评论 打赏无用 2举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2021-12-17 02:47回答 1 已采纳 用oracle 的to_char()函数转成字符串先
- 2022-04-26 04:22回答 2 已采纳 update table set a =0 where a in ('1','2','3','a','b');
- 2022-08-22 10:24回答 3 已采纳 该成小写private ArrayList column;即可
- 2020-11-25 03:55Java程序员-张凯的博客 发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java基础知识面试题 1、Java概述 ①. 何为编程 ...
- 2022-06-29 00:58回答 2 已采纳 代码参考如下: public static void main(String[] args) { String jsonStr = "[{\"A\":1,\"B\":2}, {\"A\":3,
- 2021-09-13 05:20回答 3 已采纳 这个东东,,,哪里有那么复杂, 要用ResultSet ,,请先这样; while(rs.next()){ ... ... } 这是ResultSet的next方法解释 * @re
- 2022-07-12 06:04回答 2 已采纳 别说在java中这样写可以你就是直接拼接一个sql,这样写insert into dept values('1','name','loc')也是没问题的到了数据库中,只要这个字符串能够转成int,就会
- 2021-03-25 02:37Java程序员廖志伟的博客 这些书籍包括了基础篇、进阶篇、架构篇的《Java项目实战—深入理解大型互联网企业通用技术》,以及《解密程序员的思维密码--沟通、演讲、思考的实践》。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够...
- 2023-03-09 12:59回答 4 已采纳 如果你的前端只能提供物品的数量、规格和名字,而你的数据库中有更多的字段,你可以采用以下两种方法之一: 忽略数据库中不需要的字段:你可以在向数据库中插入新的物品时,只插入前端提供的字段,并忽略数据库中不
- 2023-02-01 06:11回答 5 已采纳 你的问题: 是想使用hibernate的update语句更新某个字段为nul,只是不成功 原因: 因为更新策略为dynamic-update="true",不推荐全局改成dynamic-update=
- 2023-04-06 13:41回答 4 已采纳 题主要明白Mybatis的原理,mybatis只是个orm框架,只是在你查询的时候通过映射成想要的对象,但是查询条件里面的字段名必须是数据库里面的字段才可以
- 2024-12-24 13:14庄小焱的博客 本文概述了系统迁移的关键步骤和通用方案,包括需求分析、数据迁移、系统集成、业务连续性、用户迁移等,并讨论了迁移过程中可能遇到的挑战及应对措施,最后针对不同规模和类型的系统提供了适用的迁移策略。
- 2022-09-05 11:12hutc_Alan的博客 包含java基础,java虚拟机,java多线程,Redis,设计模式,数据结构与算法,操作系统,计算机网络
- 2021-02-04 02:54倪是一个IT民工的博客 java web 知识点总结 1、什么是Servlet? 答:可以从两方面看Servlet。 a、API:有一个接口Servlet,它是servlet规范中定义的用来处理客户端请求的程序需要实现的顶级接口。 b、组件:服务器端用来处理...
- 2024-07-22 11:33「已注销」的博客 反序列化不受信任的数据是一种固有的危险活动,因为传入数据流的内容决定了创建的对象、其字段的值以及它们之间的引用。在许多典型用途中,流中的字节是从未知、不受信任或未经身份验证的客户端接收的。通过仔细...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司