gpt4 book ai didi

hibernate - Grails读取GORM映射

转载 作者:行者123 更新时间:2023-12-02 15:49:49 26 4
gpt4 key购买 nike

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

关于hibernate - Grails读取GORM映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com