EJB 部署描述符编辑器生成相应的 finder 方法以支持您创建的所有关系。
当定义一个 CMP bean 与另一个 CMP bean 的关系时,基于引用 CMP bean 的键字段的额外 CMP 字段就会添加到前向引用角色的拥有的 CMP bean 中(已对拥有的 CMP bean 选中“外键”复选框)。
例如,分别通过公司角色和职员角色来使公司与职员之间具有一对多的关系。公司角色是“前向”角色,“公司”CMP bean 具有名为“companyID”和“companyName”的键字段。自动添加到职员 bean 中的 CMP 字段是“company_companyID”和“company_companyName”。在 EJB 编辑器中,这些字段是隐藏的,原因是添加这些字段是为了支持“职员”关系角色。 如果当关系仍然存在时从 ejb-jar.xml 文件中除去这些 CMP 字段,则将产生问题。
当创建关系后,就会创建其他类,以支持维护这两个 bean 之间的链接所需要的运行时。另外,在两个企业 bean 的 Home、远程和 Bean 类中将生成其他方法。当首次创建关系时,在 EJB 部署描述符编辑器中将看到编译错误,原因是需要对生成的“链接”类进行编译。您在这些文件中将看到实际的代码,但是尚未编译 Home、远程和 Bean 类中所作的更改。在构建项目之前将不会发生此情况,它通常会在保存 EJB 部署描述符编辑器或 EJB 编辑器时自动发生。因此,在保存编辑器之前,将看不到编译错误。
注意:如果在一个或多个 CMP bean 之间存在关系,则更改一个 CMP 的键形状可能会导致重新生成相关的 CMP。
例如,如果您正在使用关系并在远程接口上调用返回企业 bean 的枚举的关系方法,除非将这些 JAR 文件添加至类路径,否则该方法调用将抛出异常。