AuditException / NullPointerException when loading audited entity with embeddable referencing non-audited entity in Hibernate

Solution Verified - Updated

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.