我上传的文件莫名的没了?都是hibernate注解惹的祸

我做了一个功能,是上传文件到服务器。在数据表中存储服务器文件的路径。
用的是Spring + SpringMVC + Hibernate

流程是这样的,
1、查询当前表中是否保存过路径
2、判断当前是否有文件
3、如果有文件就先上传,上传成功后删除之前文件,删除失败则保留原先
4、如果没有就直接写入
5、保存

逻辑上没有什么问题,我也就这么操作了。但是就遇到一个很坑的事情,每次上传保存后,数据库存储了文件的路径,但是服务器上的文件竟然没有!
通过断点发现,在update之前,文件已经成功上传到服务器了,在执行update 操作后,服务器的文件没了!

很诡异

我还怀疑是Hibernate框架搞的鬼,查看了半天源码,没有发现什么问题。

后来,我去看实体类,这一看,发现了问题。

在这里插入图片描述
在这里插入图片描述
首先,我看着逻辑上也对。
每次设置的时候检查一下之前有没有存在的文件,如果有的话就先把旧的删除掉。
第二个删除前处理也对,在删除前先把文件给删掉。

但是,坑就坑在这里!

@PreRemove

我执行的merge操作更新记录,竟然也触发了@PreRemove方法!!!
这就导致,我更新前都会把这里的文件删掉!!!

真的是心情极不美丽,说好的删除前处理呢!这可是更新操作。

原因没有继续进一步深究,为什么会触发这个事件,不过这个坑我先记一下,日后在研究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值