String identifierPropertyName = classMetadata.getIdentifierPropertyName();
if (identifierType.isComponentType()) {
ComponentType componentIdentifierType = (ComponentType)identifierType;
String[] subPropertyNames = componentIdentifierType.getPropertyNames();
Type[] subPropertyTypes = componentIdentifierType.getSubtypes();
propertyClass = new String[subPropertyNames.length];
type = new String[subPropertyNames.length];
scale = new int[subPropertyNames.length];
precision = new int[subPropertyNames.length];
Class subPropertyClass = null;
for (int j=0; j < subPropertyNames.length; j++){
subPropertyClass = subPropertyTypes[j].getClass();
if( subPropertyTypes[j].isComponentType() ) {
ComponentType cType = (ComponentType)subPropertyTypes[j];
String[] sPropertyNames = cType.getPropertyNames();
Type[] sTypes = cType.getSubtypes();
for(int z = 0; z < sPropertyNames.length; z++) {
identifierPropertyNames.add(identifierPropertyName + "." + subPropertyNames[j] + "."+ sPropertyNames[z]);
propertyClass[j] = subPropertyClass.getName();
type[j] = subPropertyTypes[j].getName();
}