В настоящее время я использую Spring Boot 2.1.1.RELEASE, Hibernate Envers 5.3.7.Final.
Когда я запрашиваю свой AuditEntity для моего класса User, он выдаст исключение javax.persistence.EntityNotFoundException, сказав, что моя запись User не существует.Однако в базе данных она существует.Кто-нибудь знает, почему?
Пользовательский объект
@Entity
@EntityListeners(AuditingEntityListener.class)
@Audited
@Table(name = "[user]")
@Getter
@Setter
@NoArgsConstructor
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable = false, unique = true)
@Length(max = 20)
@Unique
private String username;
@Column(nullable = false)
private String password;
@Column
private String email;
@Column(nullable = false)
private String name;
@Audited(targetAuditMode = NOT_AUDITED)
@ManyToOne(fetch = FetchType.LAZY)
@CreatedBy
private User createByUser;
@CreatedDate
private LocalDateTime createDatetime;
@Audited(targetAuditMode = NOT_AUDITED)
@ManyToOne(fetch = FetchType.LAZY)
@LastModifiedBy
private User updateByUser;
@LastModifiedDate
private LocalDateTime updateDatetime;
@Column
private Boolean active = true;
@Column
private Boolean deleted = false;
}
При запросе объекта аудита свойство createByUser updateByUser выдает исключение javax.persistence.EntityNotFoundException: Невозможно найти data.entity.Пользователь с идентификатором 2. Однако в базе данных у меня есть эта запись.
AuditReader auditReader = AuditReaderFactory.get(entityManager);
AuditQuery query = auditReader.createQuery().forRevisionsOfEntity(User.class, true, true);
query.add(AuditEntity.id().eq(id));
return query.getResultList();
РЕДАКТИРОВАНИЕ на 2018-12-05
Кажется, проблема в проблемес этой записью id 2 я вставляю эти записи из бэкэнда, а не через внешний интерфейс, который сгенерирует запись в таблице _aud.Не уверен, как работает эта логика аудита.