已经存在于类顶部的注释正在删除,并且我使用Javassist添加的任何内容都在添加但不会产生任何影响。
假设
@Entity
class Master
{
//variables
//getters and setters
}
我需要的是添加额外的注释@Table(name =“Master”,schema =“Master_Database”) 通过Javassist动态添加到上面的类'Master'。
我面临的是@Entity被移除并且@Table成功添加。 这会导致eclipseLink自动生成实体类的功能丧失。 Plz帮帮我
答案 0 :(得分:1)
应该如此简单:
ctClass.getClassFile().addAttribute(attributeInfo);
这不应该删除现有的注释。为了进一步帮助您,我们需要知道您如何添加注释。
但你绑定了Javassist吗?看看Byte Buddy(我是作者),这使得添加注释变得相当简单:
TypePool pool = TypePool.Default.ofClassPath();
TypeDescription type = pool.describe("name.of.class");
Class<?> enhanced = new ByteBuddy()
.redefine(type, ClassFileLocator.ForClassFile.ofClassPath())
.annotation(new Table() {
...
})
.make()
.load(ClassLoader.getSystemClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();