java - 更新 ElementCollection 时会触发包含对象的 @PostUpdate 吗?
问题描述
我有@ElementCollection Map<User, Long> permissions
一个班级。
@ElementCollection
@CollectionTable(name = "als_permission", joinColumns = @JoinColumn(name = "File"))
@MapKeyJoinColumn(name = "User")
@Column(name = "Permission")
@JsonIgnore
private Map<User, Integer> permissions = new HashMap<>();
我只对该集合进行了一些更改,然后调用repo.save(entity)
. 我看到记录确实得到了更新,但是我@PostUpdate
定义的处理程序@EntityListeners
似乎没有被调用。
有什么我必须指出的吗?我想我可能需要在cascade
某个地方。
解决方案
简短的回答:没有。
我有同样的问题得出的结论是目前这是不可能的。主要是因为打算或尚未实现,请参阅:https ://github.com/eclipse-ee4j/jpa-api/issues/167
对于测试,我创建了一个存储库来查找我可以为给定目的使用的任何事件:https ://github.com/HannesRakete/so-jpa-element-collection-events
解决方法 1
添加 @Version 以对父实体进行乐观锁定。
解决方法 2
迁移到另一种关联类型,请参阅https://thorben-janssen.com/hibernate-tips-query-elementcollection/
推荐阅读
- json - vscode用快捷键CTRL+SHIFT+C打开CMD
- openmodelica - 带有 Open Modelica 的 ExternData 库
- azure-devops - 自托管代理的系统功能下未列出路径
- javascript - 如何隐藏已在 JS/CSS 中读取的视频?(+ 设置一个计时器,让它每小时启动一次)
- amazon-web-services - 如何重定向内部 URL 以使用 s3 网站以斜杠结尾
- linker - 如何修改 glibc 动态链接器以与不支持静态二进制文件的 x86 解释器一起使用?
- r - 如何在 R 中创建一个返回 p 值 min(1, 2*min(P{N ≤ i}, P{N ≥ i})) 的函数?
- android - 如何在 React-Native 中集成原生 android 服务
- python - Python指数曲线拟合
- c# - 带有 Angular 11 前端和 ASP .NET 后端的进度条