spring-data-jpa - 如何使用 Spring Data JPA 将 OneToMany 关系中的更改审计为拥有实体?

标签 spring-data-jpa

我已成功在实体中设置 JPA 审计。只要实体本身的数据发生变化,它就可以正常工作。但是,该实体包含一个@OneToMany 集合,我想要拥有实体的 @LastModifiedBy字段也会在仅子行更改时更新。如果可能,我不想为每一行添加审计字段。

父级关系的定义:

@Entity
@EntityListeners(AuditingEntityListener.class)
public class DataHead {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @CreatedBy
    private String creatorUser;

    @CreatedDate
    private Date createdDate;

    @LastModifiedBy
    private String modifierUser;

    @LastModifiedDate
    private Date modifiedDate;

    @OneToMany(mappedBy="dataHead", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval=true)
    @Fetch(FetchMode.SUBSELECT)
    @Valid
    private List<DataRow> rows = new AutoPopulatingList<DataRow>(DataRow.class);
    ...
}

尝试添加 @EntityListeners到子实体,没有帮助。

我使用 spring-data-jpa 1.9.4 和 Hibernate 4.3.11 作为实现。

最佳答案

作为解决方法,您可以尝试向表中添加其他字段并通过 JPA @Version 对其进行注释。

@Version
@Column
private int version;

关于spring-data-jpa - 如何使用 Spring Data JPA 将 OneToMany 关系中的更改审计为拥有实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174508/

相关文章:

java - spring-data-rest,所有存储库的通用自定义方法

java - Spring Data JPA - 具有 IN、 `=` 和 LIKE 列表的存储库

java - 如何在 Spring Data JPA 或 hibernate 中存储实体

spring - 如何在 Hibernate/Spring Data 中获取 @Transactional 注释使用的当前 session ?

java - 根据参数在数据库中查找固定数量的 RANDOM 用户的最佳方法是什么?

java - Spring Data JPA中的查询语法问题

java - JpaRepository 查找子级(可分页)

spring - 为什么 repository.delete(entity_with_id_null) 启动 SQL INSERT + DELETE

SpringBoot JPA 存储库保存方法不起作用

spring-data-jpa - 使用Spring CrudRepository时'不等于'条件