Answer D is correct.
Please refer to the following section of EJB 2.0 Spec
10.8.3 Special case: Unknown primary key class
In special situations, the entity Bean Provider may choose not to specify the primary key class or the primary key fields for an entity bean with container-managed persistence. This case usually happens when the entity bean does not have a natural primary key, and/or the Bean Provider wants to allow the Deployer using the Container Provider�s tools to select the primary key fields at deployment time. The entity bean�s primary key type will usually be derived from the primary key type used by the underlying
database system that stores the entity objects. The primary key used by the database system may not be known to the Bean Provider.
In this special case, the type of the argument of the findByPrimaryKey method must be declared as java.lang.Object. The Bean Provider must specify the primary key class in the deployment descriptor as of the type java.lang.Object.
When defining the primary key for the enterprise bean, the Deployer using the Container Provider�s tools will typically add additional container-managed fields to the concrete subclass of the entity bean class (this typically happens for entity beans that do not have a natural primary key, and the primary keys are system-generated by the underlying database system that stores the entity objects). In this case, the Container must generate the primary key value when the entity bean instance is created (and before
ejbPostCreate is invoked on the instance.)