簡體   English   中英

Grails讀取GORM映射

[英]Grails read GORM Mapping

我目前正在開發AuditListener,以便為我想要的每個DomainClass創建一個歷史記錄條目。

我創建了一個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

你對我有什么建議嗎?

如果找到解決方案,請將該列映射:

    GrailsDomainBinder grailsDomainBinder = new GrailsDomainBinder()
    grailsDomainBinder.getMapping(domainClassObject.class).columns?.each{column ->
        println column
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM