jpa 保存实体的时候,自动执行删除操作?

发布于 2022-09-03 19:46:47 字数 971 浏览 11 评论 0

在我保存实体的时候,即执行如下代码:

businessLogRepository.saveAndFlush(businessLog);
businessLogRepository.save(businessLog);

控制台会打印如下,三条语句,如下:

Hibernate: insert into log_business (login_ids, module_name, obj_id, object_type, operate_type, operate_url, time, users_name) values (?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: delete from com_user_role where userid=?
Hibernate: delete from com_user_group where userid=?

整体效果如下图:

clipboard.png

说明:如果我注掉保存方法(//businessLogRepository.save(businessLog)),即不执行保存,上面的三条sql都不会执行,给我的感觉,执行保存操作,是同时触发执行那三条语句一样。businessLog 实体,没有和 com_user 关联,实体代码如下:

clipboard.png

问题1:为什么我执行保存的时候,会执行删除操作?怎样才能避免这种情况?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撧情箌佬 2022-09-10 19:46:47

花费了半天,总算是找到原因了。
原因是,我在调用保存方法之前,将另外的实体制为空,注释掉set(null) 方法就好了。不过奇怪的地方是,我保存BusinessLog实体,之前将ProcessInstance 实体 里面的Document 实体里面的 User实体 里面的 UserGroup 等set(null),为什么会删除User实体和UserGroup实体的关联关系? 这个我现在的知识水平还解释不了。

clipboard.png

clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文