if (mapping.isOneToOneMapping()){ OneToOneMapping refmapping = (OneToOneMapping)mapping; DatabaseField targetKey = refmapping.getSourceToTargetKeyFields().get(accessor.getDatabaseField()); CMPPolicy refPolicy = refmapping.getReferenceDescriptor().getCMPPolicy(); if (refPolicy.isCMP3Policy()){
if (pkElementArray[index].isNestedAccessor()) { DatabaseField keyField = pkElementArray[index].getDatabaseField(); Object keyToUse = key; DatabaseMapping keyMapping = getDescriptor().getObjectBuilder().getMappingForField(keyField); if ( (fieldValue !=null) && (pkClass != null) && (mapping.isOneToOneMapping()) ){ OneToOneMapping refmapping = (OneToOneMapping)mapping; DatabaseField targetKey = refmapping.getSourceToTargetKeyFields().get(pkElementArray[index].getDatabaseField()); CMPPolicy refPolicy = refmapping.getReferenceDescriptor().getCMPPolicy(); if (refPolicy.isCMP3Policy()){
Object keyObj = key; KeyElementAccessor accessor = pkElementArray[index]; DatabaseField field = accessor.getDatabaseField(); DatabaseMapping mapping = builder.getMappingForField(field);
DatabaseMapping mapping = getDescriptor().getObjectBuilder().getMappingForAttributeName(accessor.getAttributeName()); if (mapping == null) { mapping = getDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField()); setFieldValue(accessor, keyInstance, mapping.getReferenceDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField()), session, elementIndex, keyElements); } else { mapping = mapping.getReferenceDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField());
Object toWriteInto = bean; Object keyFieldValue = keyElements[index].getValue(key, session); DatabaseField field = keyElements[index].getDatabaseField(); DatabaseMapping mapping = this.getDescriptor().getObjectBuilder().getMappingForAttributeName(keyElements[index].getAttributeName()); if (mapping == null) {// must be aggregate
Object keyObj = object; KeyElementAccessor accessor = pkElementArray[index]; DatabaseField field = accessor.getDatabaseField(); DatabaseMapping mapping = builder.getMappingForField(field);
Object keyObj = object; KeyElementAccessor accessor = pkElementArray[index]; DatabaseField field = accessor.getDatabaseField(); DatabaseMapping mapping = builder.getMappingForField(field); Object nestedKeyInstance = keyInstance;
DatabaseMapping mapping = getDescriptor().getObjectBuilder().getMappingForAttributeName(accessor.getAttributeName()); if (mapping == null) { mapping = getDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField()); setFieldValue(accessor, keyInstance, mapping.getReferenceDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField()), session, elementIndex, keyElements); } else { mapping = mapping.getReferenceDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField());
/** * 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); } }
setFieldValue(accessor, nestedObject, mapping.getReferenceDescriptor().getObjectBuilder().getMappingForField(accessor.getDatabaseField()), session, elementIndex, keyElements); } else { Object fieldValue = null;