今天这破bug折腾得我够呛,必须给大伙唠唠。本来寻思加个点赞功能不就分分钟的事儿嘛结果直接掉坑里了。
一坨屎一样的现象
下午刚把点赞按钮怼上去,前端小张跑过来嚷嚷:“强哥!点完赞数字乱蹦跶!” 我端着枸杞茶嗤笑:“你们前端又瞎传参数了?” 结果自己手贱戳开页面,连点三下大拇指——好家伙!显示+1 +1 +1,一刷新,啪叽掉回零蛋!保温杯差点扣键盘上。

第一回合:甩锅大战
甩开胳膊就开始查:
- 先掐前端脖子:抓包工具一开,看见点赞请求嗖嗖往后台飞,参数看着挺正经
- 再踹数据库屁股:撬开MySQL瞅两眼,数据压根没存进去!存储时间戳字段空得跟老板的承诺似的
- 揪自己头发:明明写的
new Date()自动填充时间戳?!
第二回合:源码肉搏
气得直接啃ORM框架文档,翻到实体类配置这段:
@Column(updatable = false)private Date createTime;
眼珠子差点瞪出来——这孙子把"更新时间戳"配置成不可更新了!但老子调的是save()方法不是create()!框架默认拿createTime当更新时间用,结果update语句里压根没带时间戳字段,数据库自然不鸟我!
第三回合:暴力破解
抄起键盘开始莽:
- 方案A:强写更新时间字段——报错!ORM框架死活不让改
- 方案B:另起炉灶搞个updateTime字段——整张表字段得重调
- 方案C(急眼了):直接写SQL手动灌时间戳!结果单元测试冒烟了三次
最终绝杀
瘫在椅子上啃指甲,突然瞄到实体类里躺着个注解:
@EntityListeners(*)拍着大腿嚎出声!忘加这行监听器了!补上之后拎着前端测试:
点完赞刷新——数据稳如老狗!再看数据库——时间戳字段终于吃上饭了!
现在瞅着那行注解就来气,特么的框架文档用六号字藏在犄角旮旯。收工前顺手把单元测试覆盖率怼到90%,鬼知道下次更新会不会又把监听器当配菜炒了。
(捏着枸杞茶的手微微颤抖)这年头写代码跟打黑拳似的,指不定就被哪个注解闷一棍子。

