Каждая таблица аудита имеет запись в таблице объектов редакции.Эта таблица сущностей редакции содержит информацию о дате редакции.Вы можете использовать эту дату, чтобы удалить строки из этой таблицы аудита.Но вам нужно выполнить соединение между таблицей сущностей редакций и sometable_aud
(которая имеет версии сущностей), используя id
из таблицы сущностей редакций и поле rev
из sometable_aud.
Еслиу вас есть такой объект ревизии:
@Entity
@RevisionEntity(RevisionEntityListener.class)
public class RevEntity {
@Id
@GeneratedValue
@RevisionNumber
private int id;
@Column(name = "revision_date", nullable = false)
@RevisionTimestamp
@Temporal(TemporalType.TIMESTAMP)
private Date revisionDate;
}
Вы можете использовать этот SQL для собственного запроса:
String sql = "DELETE sometable_aud
FROM sometable_aud sometable_aud
JOIN sometable sometable
ON sometable.id = sometable_aud.id
JOIN rev_entity rev_entity
ON sometable_aud.rev = rev_entity.id
WHERE rev_entity.revision_date > '2018-06-18 00:00:00.0000000'";
entityManager.executeUpdate(sql);