注释在编译时出现但在运行时不存在

时间:2010-04-07 14:58:17

标签: java jpa annotations

可以使用Java类文件,其中包含运行时不存在的注释吗?

示例:我想编写一个带有JPA @Embeddable注释的类,它将在编译时出现(maven scope:“provided”)。但是,如果在JPA应用程序之外使用该类,则运行时可能不存在annoatation定义。

3 个答案:

答案 0 :(得分:0)

您必须:

  1. 在运行时交换已编译的类(包括没有注释的类。)
  2. 覆盖@Embeddable的类定义并删除@Retention(RUNTIME)
  3. 只是阻止JPA提供商扫描课程本身。

答案 1 :(得分:0)

OSGi应用程序(例如Eclipse)将忽略无法访问的注释,即如果没有加载JPA api的JPA注释,则不会获得ClassNotFoundExceptions。

答案 2 :(得分:0)

对于这个特殊问题,我只需在XML资源中定义ORM映射而不是注释。这些映射可以放在一个不同的工件(JAR)中,根据你是否使用JPA,它将被添加(或不添加)到类路径中。