我的应用程序中有很多域类用于审计日志记录我需要每个Domain类的name属性。遗憾的是,name属性在所有域中都不是通用的。
在我的Audt日志类中,我得到了修改/创建/删除对象的类型,然后立即保存id(这是常见的代码,因为所有域都有'id'属性)但是现在如果我想获取name属性来自ID的域,每个域都有不同的name属性,比如Resource Domain有resourceName,User域有userName等等......所以我必须单独处理每个域(比如有一个map或一堆switch语句来获取来自Domain类名的name属性。)
有没有办法让每个域类名称字段的别名映射称为“名称”。无论我做什么更改,域中的实际属性都不应该有任何更改,我可以向审核域添加一列,但不能对其他表更改添加。
在此先感谢您
答案 0 :(得分:2)
我认为没有办法自动执行此操作。
正如您所猜测的那样,您要么必须更改所有域对象,以便它们具有“名称”属性,要么以某种方式维护每个类中哪个属性被视为“名称”的映射
我想一个答案可能是为每个域类添加一个getName()方法,并从该方法返回适当的值。
如果您真的根本不想修改域对象,可以使用groovy元对象编程(MOP)将此方法从BootStrap类注入到每个域类中。