0

我正在尝试使用spring-data-envers在我的 Java Spring Boot 项目中实现实体审计。所有实体都按应有的方式创建,但是在执行查询时我遇到了障碍。

parentRepository.findRevisions(id).stream().map(Parent::getEntity).collect(Collectors.toList());

在此选择期间,存储库应该也从子实体获取信息,而不是我得到unable to find <child object> with {id}.

根据我的实验 categoryId 正在 Category_Aud 表中搜索,而不是在具有所需数据的实际表中搜索。

代码片段:

@Data
@Entity
@Audited
@NoArgsConstructor
public class Parent {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Enumerated(EnumType.STRING)
    private Status status;

    @Enumerated(EnumType.STRING)
    private Type requestType;

    private String fullName; 

    @ManyToOne
    @JoinColumn(name = "child_id")
    private Child child;
}
@Data
@Entity
@Audited
@NoArgsConstructor
public class Child {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String description;
}

我已经用 RevisionRepository 扩展了 Parent

@Repository
public interface ParentRepository extends RevisionRepository<Parent, Long, Long>, JpaRepository<Parent, Long>

并注释我的 SpringBootApplication 入口类: @EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean.class)

到目前为止我找不到任何解释,如何让 parentRepository 得到我需要的东西?

4

1 回答 1

0

这里的根本问题是来自版本化实体的引用没有真正正确定义。应该返回引用的哪个变体?您用作基础的版本开头的那个,结尾的那个?现在存在的那个?

在某些情况下,每种变体都有意义。

因此,您必须自己查询修订,而不能简单地导航到它们。

于 2020-12-07T10:39:41.557 回答