【问题标题】:When updating an ElementCollection does it trigger the @PostUpdate of the containing object?更新 ElementCollection 时会触发包含对象的 @PostUpdate 吗?
【发布时间】:2021-03-14 22:39:32
【问题描述】:

我在课堂上有一个@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)。我看到记录确实得到了更新,但我在@EntityListeners 中定义的@PostUpdate 处理程序似乎没有被调用。

我有什么需要说明的吗?我想我可能需要在某个地方有某种cascade

【问题讨论】:

    标签: java spring jpa spring-data-jpa spring-data


    【解决方案1】:

    简短回答:不。

    我有同样的问题得出的结论是目前这是不可能的。主要是因为打算或尚未实现,请参阅: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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 2019-07-14
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多