/** * INTERNAL: Create an instance of the composite primary key class for the * key object. */ @Deprecated //replaced by method below but may still be used by older clients. public Object createPrimaryKeyInstance(Vector key) { KeyElementAccessor[] pkElementArray = this.getKeyClassFields(getPKClass()); if (pkElementArray.length == 1 && pkElementArray[0] instanceof KeyIsElementAccessor) { return key.get(0); } Object keyInstance = getPKClassInstance(); for (int index = 0; index < pkElementArray.length; index++) { KeyElementAccessor accessor = pkElementArray[index]; Object fieldValue = key.get(index); accessor.setValue(keyInstance, fieldValue); } return keyInstance; }
accessor.setValue(keyInstance, fieldValue);
usedObjectReferenceMappings.add((ObjectReferenceMapping)mapping); accessor.setValue(keyInstance, fieldValue);
usedObjectReferenceMappings.add((ObjectReferenceMapping)mapping); accessor.setValue(nestedKeyInstance, fieldValue);
usedObjectReferenceMappings.add((ObjectReferenceMapping)mapping); accessor.setValue(keyInstance, fieldValue);
/** * INTERNAL: * Recursive method to set a field value in the given key instance. */ protected void setFieldValue(KeyElementAccessor accessor, Object keyInstance, DatabaseMapping mapping, AbstractSession session, int[] elementIndex, Object ... keyElements) { if (mapping.isAggregateMapping()) { Object nestedObject = mapping.getRealAttributeValueFromObject(keyInstance, session); if (nestedObject == null) { nestedObject = getClassInstance(mapping.getReferenceDescriptor().getJavaClass()); mapping.setRealAttributeValueInObject(keyInstance, nestedObject); } // keep drilling down the nested mappings ... setFieldValue(accessor, nestedObject, mapping.getReferenceDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField()), session, elementIndex, keyElements); } else { Object fieldValue = null; if (mapping.isAbstractColumnMapping()) { fieldValue = keyElements[elementIndex[0]]; Converter converter = ((AbstractColumnMapping) mapping).getConverter(); if (converter != null){ fieldValue = converter.convertDataValueToObjectValue(fieldValue, session); } ++elementIndex[0]; } else if (mapping.isObjectReferenceMapping()) { // what if mapping comes from derived ID. need to get the derived mapping. // get reference descriptor and extract pk from target cmp policy fieldValue = mapping.getReferenceDescriptor().getCMPPolicy().createPrimaryKeyInstanceFromPrimaryKeyValues(session, elementIndex, keyElements); } accessor.setValue(keyInstance, fieldValue); } }
accessor.setValue(keyInstance, fieldValue);