【问题标题】:Grails read GORM MappingGrails 读取 GORM 映射
【发布时间】:2016-12-16 07:07:14
【问题描述】:

我目前正在开发一个 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

你对我有什么建议吗?

【问题讨论】:

  • 你看过审计日志插件吗?它在我们手中运作良好。

标签: hibernate grails grails-orm


【解决方案1】:

如果找到解决列映射的方法:

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

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 2022-11-23
    • 2011-01-26
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2016-06-01
    • 2012-03-20
    相关资源
    最近更新 更多