AuditException / NullPointerException when loading audited entity with embeddable referencing non-audited entity in Hibernate
Environment
- Red Hat JBoss Enterprise Application Platform (EAP) 7.0
- Hibernate 5.0
Issue
-
Defined an audited entity which has an association to an audited embeddable which, in turn, contains a reference to a non-audited entity
@Audited public class Parent { ... @ElementCollection @CollectionTable(name = "items", joinColumns = @JoinColumn(name = "PRODUCT_ID")) @OrderColumn(name = "ORDER_COL") @Audited private List<Item> items = new ArrayList<Item>(); } @Embeddable @Audited public class Item { ... @ManyToOne @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED) private Type type; } -
The following exception is raised when loading the "parent" entity
org.hibernate.envers.exception.AuditException: java.lang.NullPointerException at org.hibernate.envers.internal.entities.mapper.relation.component.MiddleEmbeddableComponentMapper.mapToObjectFromFullMap(MiddleEmbeddableComponentMapper.java:55) at org.hibernate.envers.internal.entities.mapper.relation.lazy.initializor.ListCollectionInitializor.addToCollection(ListCollectionInitializor.java:66) ... at org.hibernate.envers.internal.reader.FirstLevelCache.putOnEntityNameCache(FirstLevelCache.java:87) at org.hibernate.envers.internal.entities.EntityInstantiator.createInstanceFromVersionsEntity(EntityInstantiator.java:111) at org.hibernate.envers.internal.entities.EntityInstantiator.addInstancesFromVersionsEntities(EntityInstantiator.java:164) at org.hibernate.envers.query.internal.impl.AbstractAuditQuery.applyProjections(AbstractAuditQuery.java:336) at org.hibernate.envers.query.internal.impl.EntitiesAtRevisionQuery.list(EntitiesAtRevisionQuery.java:128) at org.hibernate.envers.query.internal.impl.AbstractAuditQuery.getSingleResult(AbstractAuditQuery.java:111) at org.hibernate.envers.internal.reader.AuditReaderImpl.find(AuditReaderImpl.java:124) at org.hibernate.envers.internal.reader.AuditReaderImpl.find(AuditReaderImpl.java:93) at org.hibernate.envers.internal.reader.AuditReaderImpl.find(AuditReaderImpl.java:87) ...
Resolution
This issue is resolved as part of:
Root Cause
This is a known defect (Content from hibernate.atlassian.net is not included.HHH-11215).
Components
Category
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.