简体   繁体   English

Grails读取GORM映射

[英]Grails read GORM Mapping

I'm currently developing an AuditListener to create an History Entry for every DomainClass that I want to. 我目前正在开发AuditListener,以便为我想要的每个DomainClass创建一个历史记录条目。

I created an AuditListener 我创建了一个AuditListener

class AuditingListener extends AbstractPersistenceEventListener { 类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
        }
    }
}

Now I want to create the Method createRevisionEntity that should create the Revision for the current Entity. 现在,我想创建方法createRevisionEntity ,该方法应该为当前实体创建修订。 The Method should create an new Object called RevisionEntity and add dynamicly all the Properties of the current DomainClassObject. 该方法应创建一个名为RevisionEntity的新对象,并动态添加当前DomainClassObject的所有属性。 With that I would have an Revisioned Entity of any DomainClass I want, similiar to hibernate Envers. 这样,我将拥有一个我想要的任何DomainClass的修订版实体,类似于休眠Envers。

I'm able to put dynamicly the properties to RevisionEntity but my Problem is that I didn't get the mapping Informations and put It in RevisionEntity . 我能够动态地将属性放到RevisionEntity但是我的问题是我没有获取映射信息并将其放到RevisionEntity

Do U have any suggestions for me? 你对我有什么建议吗?

If found a solution to geht the column Mapping: 如果找到解决方案,请将该列映射:

    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