指定主键类有两种主要的方法:
就 1.1 CMP bean 而言,对于 bean 类中的每个键字段,键类中必须存在具有相同名称和类型的字段;相反,对于键类中的每个字段,bean 类中必须存在具有相同名称和类型的字段并且认为这些字段是键字段。对于 2.x CMP bean,每个键字段必须存在 get 和 set 方法。
例如,假定银行业务应用程序具有一个 EJB 1.1 帐户 bean。accountNumber 属性已经被指定为键字段,它对应于 ACCOUNT 数据库表的主键。Account 的键类(AccountKey)包括下列各项:
作为 AccountKey 的备用项,Account 可以使用键类 java.lang.String 和主键字段 accountNumber。
键类由所有继承企业 bean 公用。这意味着父企业 bean 的键类也会被它的所有子企业 bean 使用。因此,如果更改了实体的键类,并且子类型或继承结构也更改了,则所有子类型实体将重新生成它们相应的 Home 和 Bean 类。只有处于同一继承层次结构的 bean 之间才能共享键类。
如果将角色作为键的一部分,而且角色的企业 bean 类型的键形状发生了更改(添加或除去了键),则会显示一个对话框,用来向所有键角色传播这些更改。在大多数情况下,应选择是或者全部都是。不向所有键角色传播这些更改可导致编译错误。
EJB 工具当前不支持 EJB 2.0 规范中描述的未知主键定义。变通方法是定义特定主键类。