Как удалить записи из моей контрольной таблицы?

Я в настоящее время работаю с, в спящем режиме Envers.

Как удалить записи в контрольной таблице, связанной с объектом, который я хочу удалить? Мой объект не имеет никакого отношения с другими объектами.

Я выяснил, что должен выполнить в этом onPostDelete метод моего пользовательского слушателя:

import org.hibernate.envers.event.AuditEventListener;
import org.hibernate.event.PostCollectionRecreateEvent;
import org.hibernate.event.PostDeleteEvent;
import org.hibernate.event.PostInsertEvent;
import org.hibernate.event.PostUpdateEvent;
import org.hibernate.event.PreCollectionRemoveEvent;
import org.hibernate.event.PreCollectionUpdateEvent;

public class MyListener extends AuditEventListener {

  ...
  @Override
  public void onPostDelete(PostDeleteEvent arg0) {
    // TODO Auto-generated method stub
    super.onPostDelete(arg0);
  }
  ...

}

Я прочитал документацию, форумы, много вещей, но я не могу понять это. Возможно, это не возможно, я не знаю.

Кто-то когда-либо делал это прежде?

7
задан Unihedron 25 October 2014 в 11:47
поделиться

2 ответа

Хорошо, я на 50% справился с этим для тех, кто хочет знать.

Благодаря создателю Hibernate Envers, Адаму Варски, я цитирую:

«id» - это ключевое слово гибернации для идентификатора объекта, независимо от его имени; в В случае объектов аудита идентификатор составной и называется "originalId". Попробуйте:

"delete from full.package.name.User_AUD u where u.originalId.id = :userid" 

Но теперь я также хотел бы удалить записи, относящиеся к таблице аудита, в моей таблице revinfo.

Если у кого-то есть ключ к разгадке, дайте мне знать.

2
ответ дан 7 December 2019 в 12:16
поделиться

Записи аудита обычно только добавляются, а не удаляются, даже когда удаляется связанный объект, поэтому я не думаю , что Envers API поддерживает это.

Теперь, если вы действительно хотите удалить записи для удаленных объектов (это своего рода поражение цели аудита), вы можете немного отложить это и вместо удаления записей во время удаления запускать ежедневный собственный запрос, например, каждый ночь.

0
ответ дан 7 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: