Hibernate envers - 为审计字段的非审计和历史数据获取最新数据

时间:2014-12-14 01:48:21

标签: java hibernate hibernate-envers

我想知道是否有一种简单/标准的方法来查询oneToMany关系,其中未审核拥有的实体/父级但审核了子级

人 - <地址

public class Person {
    @Id
    int id;

    @Column(name = "name")
    String name;

    @Audited
    @OneToMany(mappedBy = "person", orphanRemoval = true, cascade = { CascadeType.ALL })
    private List<Address> addresses = new ArrayList<>();
}

@Audited
public class Address {
    @Id
    int id;

    @Column(name = "country")
    String country;

    @Column(name = "city")
    String city;

    @ManyToOne
    @JoinColumn(name = "person_id")
    private Person person;
}

那么如何查询修订版中的地址和人员列表,其中填写了所有字段(审计和未审计)

E.g。在上面的数据模型中,如果我做了

auditReader.createQuery().
     forEntitiesAtRevision(Person.class, 2).getResultList().get(0);

我期待以下结果

Person 1 -> 5, "Bob", [{1, "USA", "Seattle"},{2,"USA","Austin"}]

而是返回

Person 1 -> 5, null , [{1, "USA", "Seattle"},{2,"USA","Austin"}]

1 个答案:

答案 0 :(得分:0)

如果未审核字段,则不会填充它们。如果没有存储数据,他们怎么可能? :)