@@ -82,10 +82,10 @@ public aspect MongoDocumentBacking {
82
82
args (entity);
83
83
84
84
// intercept EntityManager.remove calls
85
- public pointcut entityManagerRemove (EntityManager em , Object entity ) :
86
- call (* EntityManager . remove(Object )) &&
87
- target (em) &&
88
- args (entity);
85
+ // public pointcut entityManagerRemove(EntityManager em, Object entity) :
86
+ // call(* EntityManager.remove(Object)) &&
87
+ // target(em) &&
88
+ // args(entity);
89
89
90
90
// move changeSet from detached entity to the newly merged persistent object
91
91
Object around (EntityManager em , Object entity ) : entityManagerMerge(em, entity) {
@@ -97,26 +97,31 @@ public aspect MongoDocumentBacking {
97
97
}
98
98
99
99
// clear changeSet from removed entity
100
- Object around (EntityManager em , Object entity ) : entityManagerRemove(em, entity) {
101
- if (entity instanceof DocumentBacked ) {
102
- ChangeSet nulledCs = new HashMapChangeSet ();
103
- DocumentBacked documentEntity = (DocumentBacked ) entity;
104
- @SuppressWarnings (" unchecked" )
105
- ChangeSetPersister<Object > changeSetPersister = (ChangeSetPersister<Object > )documentEntity. itdChangeSetPersister;
106
- try {
100
+ // Object around(EntityManager em, Object entity) : entityManagerRemove(em, entity) {
101
+ // if (entity instanceof DocumentBacked) {
102
+ // removeChangeSetValues((DocumentBacked)entity);
103
+ // }
104
+ // return proceed(em, entity);
105
+ // }
106
+
107
+ private static void removeChangeSetValues (DocumentBacked entity ) {
108
+ LOGGER . debug(" Removing all change-set values for " + entity);
109
+ ChangeSet nulledCs = new HashMapChangeSet ();
110
+ DocumentBacked documentEntity = (DocumentBacked ) entity;
111
+ @SuppressWarnings (" unchecked" )
112
+ ChangeSetPersister<Object > changeSetPersister = (ChangeSetPersister<Object > )documentEntity. itdChangeSetPersister;
113
+ try {
107
114
changeSetPersister. getPersistentState(
108
115
documentEntity. getClass(),
109
116
documentEntity. get_persistent_id(),
110
117
documentEntity. getChangeSet());
111
- }
112
- catch (DataAccessException e) {}
113
- catch (NotFoundException e) {}
114
- for (String key : (( DocumentBacked ) entity) . getChangeSet(). getValues(). keySet()) {
118
+ }
119
+ catch (DataAccessException e) {}
120
+ catch (NotFoundException e) {}
121
+ for (String key : entity. getChangeSet(). getValues(). keySet()) {
115
122
nulledCs. set(key, null );
116
- }
117
- ((DocumentBacked )entity). setChangeSet(nulledCs);
118
- }
119
- return proceed (em, entity);
123
+ }
124
+ entity. setChangeSet(nulledCs);
120
125
}
121
126
122
127
before (DocumentBacked entity ) : arbitraryUserConstructorOfChangeSetBackedObject(entity) {
@@ -204,6 +209,7 @@ public aspect MongoDocumentBacking {
204
209
LOGGER . debug(" JPA lifecycle event PostRemove: " + this . getClass(). getName() + " :: " + this );
205
210
}
206
211
registerTransactionSynchronization(this );
212
+ removeChangeSetValues(this );
207
213
}
208
214
@javax . persistence.PostLoad public void DocumentBacked.itdPostLoad () {
209
215
if (LOGGER . isDebugEnabled()) {
0 commit comments