If I set hibernate.jpa.compliance.query=true then I get :
org.hibernate.query.sqm.StrictJpaComplianceViolation: Encountered FQN entity name [gbt.osmoze.model.osmoze.audit.CustomRevEntity], but strict JPQL compliance was requested ( [CustomRevEntity] should be used instead )
Request is :
org.hibernate.envers.AuditReader reader;
Long id;
@SuppressWarnings("unchecked")
List<Object[]> list = reader.createQuery()
.forRevisionsOfEntity(clazz, false, true)
.add(AuditEntity.id().eq(id))
.getResultList();
With a custom revision entity :
package gbt.osmoze.model.osmoze.audit
@Entity
@Table(name="Revision_Infos")
@RevisionEntity(CustomRevisionListener.class)
public class CustomRevEntity implements Serializable, RevEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(name="revision_id")
@RevisionNumber
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "RevisionInfosSequence")
@SequenceGenerator(name = "RevisionInfosSequence", sequenceName = "Revision_Infos_SEQ", allocationSize = 1)
private long revisionId;
@Column(name="epoch_timestamp")
@RevisionTimestamp
private long epochTimestamp;
@Convert(converter=gbt.model.converter.TimestampToInstantConverter.class)
@Column(name="timestamp")
private Instant timestamp;
@Column(name="user_id")
private String userId;
// rest omitted
}
If hibernate.jpa.compliance.query=false
then it works fine and the query is :
SELECT o1_0.REV,
o1_0.ordre_operation_id,
o1_0.ordre_operation_type,
o1_0.REVTYPE,
o1_0.cancelled_by_operation_id,
o1_0.comment,
o1_0.comment_source,
c1_0.revision_id,
c1_0.epoch_timestamp,
c1_0.timestamp,
c1_0.user_id
FROM Ordre_Operations_AUD o1_0,
Revision_Infos c1_0
WHERE o1_0.ordre_operation_id=?
AND o1_0.REV=c1_0.revision_id
ORDER BY o1_0.REV
So is it possible to work with Envers with hibernate.jpa.compliance.query
set to true ?
I work with wildfly-29.0.1.Final and hibernate-envers 6.2.6.Final