我需要将save()
方法引入任何使用@Persistent
注释注释的类型。此方法只是将对象保存到底层数据库中,并返回该对象的副本及其行ID(例如Person personSaved = person.save()
)
为此,我使用AspectJ编写了给定的方面(PersistentObject
是一个提供save()
方法的接口):
public aspect PersistencyAspect {
declare parents: (@Persistent *) implements PersistentObject;
public PersistentObject PersistentObject.save() {
// perform the save operation and return a copy of this
}
}
上面的代码看起来不错。但我的问题是save()
方法的返回类型。我想将其声明为@Persistent
(例如Person)而不是PersistentObject
注释的实际类型。
你有解决我的问题的方法吗?提前谢谢。
答案 0 :(得分:1)
我明白你想要什么。技术答案很简单:没有。
OTOH,我认为这不是一个很大的损失,因为你想要的东西似乎并不是一个好的应用程序设计:save()
返回一个反直觉的对象,因为它不是一个getter。为什么要返回已有的物体?我希望save()
有一个void
返回类型。