Я использую Hibernate Envers для аудита объектов. Есть такая возможность получить все версии / ревизии сущности, например:
AuditQuery auditQuery = auditReader.createQuery().forRevisionsOfEntity(
Soup.class, true, true);
auditQuery.add(AuditEntity.property("id").eq(id));
List<Soup> from = auditQuery.getResultList();
Но это занимает слишком много времени, потому что объединяет все таблицы (в этом примере rev, soup_aud, ингридиенты_aud). И мне нужны только значения из Soup_AUD.
Как выбрать значения из проверенной таблицы с помощью пользовательского запроса?
Суп. java:
@Entity
@Table(name = "SOUP")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Wither
@Audited
public class Soup {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(cascade = {CascadeType.ALL}, orphanRemoval = true)
@JoinColumn(name = "INGREDIENT_ID")
private List<Ingredient> ingredients;
}
Ингредиент. java:
@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Wither
@Audited
public class Ingredient {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}