{
// User defined name, so we use that.
identifier = idFactory.newDatastoreFieldIdentifier(colmd.getName());
}
DatastoreField column = table.addDatastoreField(javaType.getName(), identifier, refDatastoreMapping, colmd);
((Column) m.getDataStoreMapping(i).getDatastoreField()).copyConfigurationTo(column);
if (isPrimaryKey)
{
column.setAsPrimaryKey();
}
if (isNullable)
{
column.setNullable();
}
storeMgr.getMappingManager().createDatastoreMapping(refDatastoreMapping, storeMgr, column,
m.getDataStoreMapping(i).getJavaTypeMapping().getJavaTypeForDatastoreMapping(i));
}
catch (DuplicateColumnNameException ex)
{
throw new JPOXUserException("Cannot create column for field "+fmd.getFullFieldName()+" column metadata "+colmd,ex);
}
((PersistenceCapableMapping) container).addJavaTypeMapping(refDatastoreMapping);
}
}
}
else
{
// Non-PC mapping
// Add column for the field
DatastoreField column = null;
ColumnMetaData colmd = null;
if (columnMetaData != null && columnMetaData.length > 0)
{
colmd = columnMetaData[0];
}
DatastoreIdentifier identifier = null;
if (colmd != null && colmd.getName() != null)
{
// User specified name
identifier = idFactory.newDatastoreFieldIdentifier(colmd.getName());
}
else
{
// No user-supplied name so generate one
identifier = ((RDBMSIdentifierFactory)idFactory).newJoinTableFieldIdentifier(fmd, null, null,
storeMgr.getOMFContext().getTypeManager().isDefaultEmbeddedType(javaType), fieldRole);
}
column = table.addDatastoreField(javaType.getName(), identifier, mapping, colmd);
storeMgr.getMappingManager().createDatastoreMapping(mapping, storeMgr, column,
mapping.getJavaTypeForDatastoreMapping(0));
if (isNullable)
{
column.setNullable();
}
}
return mapping;
}