0
我目前正在開發一個AuditListener來爲我想要的每個DomainClass創建一個歷史記錄條目。Grails讀取GORM映射
我創建了一個AuditListener
類AuditingListener擴展AbstractPersistenceEventListener {
public AuditingListener(final Datastore datastore){
super(datastore)
}
@Override
protected void onPersistenceEvent(final AbstractPersistenceEvent event){
switch(event.eventType){
case EventType.PostInsert:
onPostInsert(event as PostInsertEvent)
break
case EventType.PreUpdate:
onPreUpdate(event as PreUpdateEvent)
break
case EventType.PreDelete:
onPreDelete(event as PreDeleteEvent)
break
}
}
def onPreUpdate(PreUpdateEvent event){
Object domainClassObject = event.entityObject
PersistentEntity entity = event.entity
if(isAuditableEntity(domainClassObject)){
try {
GrailsDomainClass grailsDomainClass = getGrailsDomainClass(domainClassObject)
Set<String> propertyNames = getPropertyNames(grailsDomainClass)
if(propertyNames){
Map properties = getPropertiesMap(propertyNames, domainClassObject, grailsDomainClass)
createRevisionEntity(entity, grailsDomainClass, domainClassObject, properties)
}
} catch(Exception e){
log.error "Could not found Audit domainClassObject Class of ${domainClassObject}", e
}
}
}
現在我想創建方法createRevisionEntity
應該創建當前實體的修訂。該方法應創建一個名爲RevisionEntity
的新對象,並動態添加當前DomainClassObject的所有屬性。因此,我將擁有我想要的任何DomainClass的修訂實體,類似於休眠Envers。
我可以動態地將屬性設置爲RevisionEntity
但我的問題是我沒有得到映射信息並將它放在RevisionEntity
中。
對我有什麼建議嗎?
你看着審計日誌插件?它在我們手中運作良好。 – helgew