Javassist覆盖现有注释

时间:2015-01-14 11:03:41

标签: javassist

已经存在于类顶部的注释正在删除,并且我使用Javassist添加的任何内容都在添加但不会产生任何影响。

假设

@Entity
class Master
{

      //variables
     //getters and setters
}     

我需要的是添加额外的注释@Table(name =“Master”,schema =“Master_Database”) 通过Javassist动态添加到上面的类'Master'。

我面临的是@Entity被移除并且@Table成功添加。 这会导致eclipseLink自动生成实体类的功能丧失。 Plz帮帮我

1 个答案:

答案 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();