Skip to content

Commit 76fe91c

Browse files
HHH-5845 - Lazy loading of audited entites with revision type DEL
1 parent 2daa528 commit 76fe91c

29 files changed

+1154
-521
lines changed

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/AbstractCollectionMapper.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,22 @@ public void mapModifiedFlagsToMapForCollectionChange(String collectionPropertyNa
200200

201201
protected abstract Initializor<T> getInitializor(AuditConfiguration verCfg,
202202
AuditReaderImplementor versionsReader, Object primaryKey,
203-
Number revision);
203+
Number revision, boolean removed);
204204

205205
public void mapToEntityFromMap(AuditConfiguration verCfg, Object obj, Map data, Object primaryKey,
206206
AuditReaderImplementor versionsReader, Number revision) {
207-
Setter setter = ReflectionTools.getSetter(obj.getClass(),
208-
commonCollectionMapperData.getCollectionReferencingPropertyData());
207+
Setter setter = ReflectionTools.getSetter(obj.getClass(), commonCollectionMapperData.getCollectionReferencingPropertyData());
209208
try {
210-
setter.set(obj, proxyConstructor.newInstance(getInitializor(verCfg, versionsReader, primaryKey, revision)), null);
209+
setter.set(
210+
obj,
211+
proxyConstructor.newInstance(
212+
getInitializor(
213+
verCfg, versionsReader, primaryKey, revision,
214+
RevisionType.DEL.equals( data.get( verCfg.getAuditEntCfg().getRevisionTypePropName() ) )
215+
)
216+
),
217+
null
218+
);
211219
} catch (InstantiationException e) {
212220
throw new AuditException(e);
213221
} catch (IllegalAccessException e) {

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/BasicCollectionMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ public BasicCollectionMapper(CommonCollectionMapperData commonCollectionMapperDa
4949
}
5050

5151
protected Initializor<T> getInitializor(AuditConfiguration verCfg, AuditReaderImplementor versionsReader,
52-
Object primaryKey, Number revision) {
52+
Object primaryKey, Number revision, boolean removed) {
5353
return new BasicCollectionInitializor<T>(verCfg, versionsReader, commonCollectionMapperData.getQueryGenerator(),
54-
primaryKey, revision, collectionClass, elementComponentData);
54+
primaryKey, revision, removed, collectionClass, elementComponentData);
5555
}
5656

5757
protected Collection getNewCollectionContent(PersistentCollection newCollection) {

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/ListCollectionMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ public ListCollectionMapper(CommonCollectionMapperData commonCollectionMapperDat
5454
}
5555

5656
protected Initializor<List> getInitializor(AuditConfiguration verCfg, AuditReaderImplementor versionsReader,
57-
Object primaryKey, Number revision) {
57+
Object primaryKey, Number revision, boolean removed) {
5858
return new ListCollectionInitializor(verCfg, versionsReader, commonCollectionMapperData.getQueryGenerator(),
59-
primaryKey, revision, elementComponentData, indexComponentData);
59+
primaryKey, revision, removed, elementComponentData, indexComponentData);
6060
}
6161

6262
@SuppressWarnings({"unchecked"})

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/MapCollectionMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ public MapCollectionMapper(CommonCollectionMapperData commonCollectionMapperData
5252
}
5353

5454
protected Initializor<T> getInitializor(AuditConfiguration verCfg, AuditReaderImplementor versionsReader,
55-
Object primaryKey, Number revision) {
55+
Object primaryKey, Number revision, boolean removed) {
5656
return new MapCollectionInitializor<T>(verCfg, versionsReader, commonCollectionMapperData.getQueryGenerator(),
57-
primaryKey, revision, collectionClass, elementComponentData, indexComponentData);
57+
primaryKey, revision, removed, collectionClass, elementComponentData, indexComponentData);
5858
}
5959

6060
protected Collection getNewCollectionContent(PersistentCollection newCollection) {

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/SortedMapCollectionMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public SortedMapCollectionMapper(CommonCollectionMapperData commonCollectionMapp
4646
}
4747

4848
protected Initializor<SortedMap> getInitializor(AuditConfiguration verCfg, AuditReaderImplementor versionsReader,
49-
Object primaryKey, Number revision) {
49+
Object primaryKey, Number revision, boolean removed) {
5050
return new SortedMapCollectionInitializor(verCfg, versionsReader, commonCollectionMapperData.getQueryGenerator(),
51-
primaryKey, revision, collectionClass, elementComponentData, indexComponentData, comparator);
51+
primaryKey, revision, removed, collectionClass, elementComponentData, indexComponentData, comparator);
5252
}
5353

5454
}

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/SortedSetCollectionMapper.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,8 @@ public SortedSetCollectionMapper(CommonCollectionMapperData commonCollectionMapp
4646
}
4747

4848
protected Initializor<SortedSet> getInitializor(AuditConfiguration verCfg, AuditReaderImplementor versionsReader,
49-
Object primaryKey, Number revision) {
49+
Object primaryKey, Number revision, boolean removed) {
5050
return new SortedSetCollectionInitializor(verCfg, versionsReader, commonCollectionMapperData.getQueryGenerator(),
51-
primaryKey, revision, collectionClass, elementComponentData, comparator);
51+
primaryKey, revision, removed, collectionClass, elementComponentData, comparator);
5252
}
53-
5453
}

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/initializor/AbstractCollectionInitializor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,19 @@ public abstract class AbstractCollectionInitializor<T> implements Initializor<T>
3737
private final AuditReaderImplementor versionsReader;
3838
private final RelationQueryGenerator queryGenerator;
3939
private final Object primaryKey;
40-
4140
protected final Number revision;
41+
protected final boolean removed;
4242
protected final EntityInstantiator entityInstantiator;
4343

4444
public AbstractCollectionInitializor(AuditConfiguration verCfg,
4545
AuditReaderImplementor versionsReader,
4646
RelationQueryGenerator queryGenerator,
47-
Object primaryKey, Number revision) {
47+
Object primaryKey, Number revision, boolean removed) {
4848
this.versionsReader = versionsReader;
4949
this.queryGenerator = queryGenerator;
5050
this.primaryKey = primaryKey;
5151
this.revision = revision;
52+
this.removed = removed;
5253

5354
entityInstantiator = new EntityInstantiator(verCfg, versionsReader);
5455
}
@@ -58,7 +59,7 @@ public AbstractCollectionInitializor(AuditConfiguration verCfg,
5859
protected abstract void addToCollection(T collection, Object collectionRow);
5960

6061
public T initialize() {
61-
List<?> collectionContent = queryGenerator.getQuery(versionsReader, primaryKey, revision).list();
62+
List<?> collectionContent = queryGenerator.getQuery(versionsReader, primaryKey, revision, removed).list();
6263

6364
T collection = initializeCollection(collectionContent.size());
6465

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/initializor/ArrayCollectionInitializor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ public class ArrayCollectionInitializor extends AbstractCollectionInitializor<Ob
4141
public ArrayCollectionInitializor(AuditConfiguration verCfg,
4242
AuditReaderImplementor versionsReader,
4343
RelationQueryGenerator queryGenerator,
44-
Object primaryKey, Number revision,
44+
Object primaryKey, Number revision, boolean removed,
4545
MiddleComponentData elementComponentData,
4646
MiddleComponentData indexComponentData) {
47-
super(verCfg, versionsReader, queryGenerator, primaryKey, revision);
47+
super(verCfg, versionsReader, queryGenerator, primaryKey, revision, removed);
4848

4949
this.elementComponentData = elementComponentData;
5050
this.indexComponentData = indexComponentData;

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/initializor/BasicCollectionInitializor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ public class BasicCollectionInitializor<T extends Collection> extends AbstractCo
4646
public BasicCollectionInitializor(AuditConfiguration verCfg,
4747
AuditReaderImplementor versionsReader,
4848
RelationQueryGenerator queryGenerator,
49-
Object primaryKey, Number revision,
49+
Object primaryKey, Number revision, boolean removed,
5050
Class<? extends T> collectionClass,
5151
MiddleComponentData elementComponentData) {
52-
super(verCfg, versionsReader, queryGenerator, primaryKey, revision);
52+
super(verCfg, versionsReader, queryGenerator, primaryKey, revision, removed);
5353

5454
this.collectionClass = collectionClass;
5555
this.elementComponentData = elementComponentData;

hibernate-envers/src/main/java/org/hibernate/envers/entities/mapper/relation/lazy/initializor/ListCollectionInitializor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ public class ListCollectionInitializor extends AbstractCollectionInitializor<Lis
4242
public ListCollectionInitializor(AuditConfiguration verCfg,
4343
AuditReaderImplementor versionsReader,
4444
RelationQueryGenerator queryGenerator,
45-
Object primaryKey, Number revision,
45+
Object primaryKey, Number revision, boolean removed,
4646
MiddleComponentData elementComponentData,
4747
MiddleComponentData indexComponentData) {
48-
super(verCfg, versionsReader, queryGenerator, primaryKey, revision);
48+
super(verCfg, versionsReader, queryGenerator, primaryKey, revision, removed);
4949

5050
this.elementComponentData = elementComponentData;
5151
this.indexComponentData = indexComponentData;

0 commit comments

Comments
 (0)