Как выполнить пользовательский запрос к таблице аудита в спящем режиме - PullRequest
0 голосов
/ 27 марта 2020

Попытка получить записи с помощью пользовательского запроса в таблице audit . У меня есть Hibernate структура объекта, как показано ниже ..,

@Audited
@Entity
public class TableA {
    @EmbeddedId
    private PrimaryKeyID primaryKeyID;
    private Double price;
    private Date modifiedOn;
    private String status;
}
@Embeddable
public class PrimaryKeyID implements Serializable {
    private Integer Id;
}

Запрос, который я пытаюсь повторить через AuditFactory:

SELECT * FROM table_A_aud where id = ? and status=? order by modifiedOn desc limit 3;

Tried Hibernate документ в Envers , но я не нашел много информации об этом. Может ли кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 01 апреля 2020

Чтобы выполнить запрос к таблицам аудита, вы должны сделать следующее:

List results = AuditReaderFactory.get( session )
  .createQuery()
  .forRevisionsOfEntity( TableA.class, true, false )
  .add( AuditEntity.id().eq( entityId ) )
  .add( AuditEntity.property( "status" ).eq( entityStatus ) )
  .addOrder( AuditEntity.property( "modifiedOn" ).desc() )
  .setMaxResults( 3 )
  .getResultList();

В этом запросе мы даем указание читателю получать только экземпляры объекта (исключая маркеры удаления), где объект id равен entityId, а статус равен entityStatus и упорядочивает результаты по столбцу modifiedOn в порядке убывания.

Вы заметите, что большая часть этого API-интерфейса Query имитирует, что устаревшего API Hibernate Criteria.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...