public ClassDescriptor buildPhoneNumberDescriptor() { RelationalDescriptor descriptor = new RelationalDescriptor(); descriptor.setJavaClass(PhoneNumber.class); descriptor.addTableName("PHONE"); descriptor.addPrimaryKeyFieldName("PHONE.PHONE_ID"); // Descriptor Properties. descriptor.useSoftCacheWeakIdentityMap(); descriptor.setIdentityMapSize(100); descriptor.setSequenceNumberFieldName("PHONE.PHONE_ID"); descriptor.setSequenceNumberName("PHONE_SEQ"); descriptor.setAlias("PhoneNumber"); // Query keys. descriptor.addDirectQueryKey("id", "PHONE.EMP_ID"); // Mappings. DirectToFieldMapping idMapping = new DirectToFieldMapping(); idMapping.setAttributeName("id"); idMapping.setFieldName("PHONE.PHONE_ID"); descriptor.addMapping(idMapping); DirectToFieldMapping areaCodeMapping = new DirectToFieldMapping(); areaCodeMapping.setAttributeName("areaCode"); areaCodeMapping.setFieldName("PHONE.AREA_CODE"); descriptor.addMapping(areaCodeMapping); DirectToFieldMapping numberMapping = new DirectToFieldMapping(); numberMapping.setAttributeName("number"); numberMapping.setFieldName("PHONE.P_NUMBER"); descriptor.addMapping(numberMapping); DirectToFieldMapping typeMapping = new DirectToFieldMapping(); typeMapping.setAttributeName("type"); typeMapping.setFieldName("PHONE.TYPE"); descriptor.addMapping(typeMapping); OneToOneMapping ownerMapping = new OneToOneMapping(); ownerMapping.setAttributeName("ownerHolder"); ownerMapping.setReferenceClass(Employee.class); ownerMapping.useBasicIndirection(); ownerMapping.addForeignKeyFieldName("PHONE.EMP_ID", "EMPLOYEE.EMP_ID"); descriptor.addMapping(ownerMapping); return descriptor; }