@MappedSuperclass使用EclipseLink和多个jar进行静态编织

时间:2012-11-15 07:15:46

标签: jpa orm jpa-2.0 eclipselink toplink

我的实体对象分散在多个罐子里 在jar A中,我有一个基类名MyBase,它用@MappedSuperclass注释 在jar B中有一个派生自MyBase的实体类 问题是因为编织是在jar文件的上下文中完成的(我正在使用maven插件),基类(MyBase)没有被检测(尽管它应该)。
如果我将派生类从jar B移动到A,那么编织过程也将处理基础 由于我正在开展一个大型项目,因此以模块化方式进行开发至关重要 EclipseLink不支持这种方法吗?

3 个答案:

答案 0 :(得分:1)

我发现覆盖此限制的唯一方法是将一个临时实体类添加到定义了@MappedSuperclass基类的jar中,并在编织过程之后将其删除。 可悲,但却是真的; - )

答案 1 :(得分:0)

我不确定maven插件,但你应该能够在两个罐子上使用静态织布工,你需要调用它两次来编织两个,并且两个调用都需要weavers类路径上的两个jar

答案 2 :(得分:0)

或者,您可以将包含超类的jar指定为inpath - 如[{3}}和here所述:

  

管理多个项目

     

构建AspectJ源代码需要两个不同的阶段;编译   .java和.aj文件中的源代码生成.class文件,然后   将方面应用于生成的.class文件。第二阶段,   称为编织,是AspectJ和Java之间的关键区别   编译器。 Java编译过程由类路径控制   设置,使类型可供编译器解析。   AspectJ编译过程使用相同的类路径设置   它在Eclipse中以完全相同的方式配置。但是,这个   设置不足以控制编译和编织   在所有情况下的步骤。这就是为什么有两个额外的设置   适用于AspectJ项目。

     

首先,有inpath设置。这里指定的任何内容都是   提供给织布工,因此任何适用的方面都将是   通过右键单击,可以将条目添加到项目的路径中   在项目上,选择Properties,然后转到AspectJ InPath   部分。条目可以是JAR文件或目录(类   文件夹),例如另一个项目的bin目录。什么都有   在可能存在之后,inpath被发送到项目的输出   与方面编织。

     

第二个附加设置是aspectpath。而inpath   控制编织的东西列表,方面路径控制   什么被编入该清单。换句话说,指定的任何方面   纵向路径可用于编织过程,就像是   它们以项目的源形式出现。这个设置是   从AspectJ Aspect Path属性页面控制并可以包含   JAR文件或目录。

     

输出JAR设置也出现在每个的AspectJ部分中   项目的属性页面。此设置使编译器输出   将文件直接分类到JAR文件,而不是项目的输出   文件夹中。

就像你一样让我疯狂 - 希望这会有所帮助。 ;)