public class JpaNameMappingCustomizer implements SessionCustomizer {
@Override
public void customize( Session session ) throws Exception {
Map<Class, ClassDescriptor> descs = session.getDescriptors();
Collection<ClassDescriptor> descriptors = descs.values();
// This code assumes single table per descriptor!
for (ClassDescriptor desc : descriptors) {
String fullClassName = desc.getJavaClassName();
String className= Helper.getShortClassName( fullClassName );
String tableName = camelCaseToUnderscore(className);
desc.setTableName( tableName );
updateFieldNameMappings(desc);
}
}
private void updateFieldNameMappings( ClassDescriptor desc ) {
for (DatabaseMapping mapping : desc.getMappings()) {
if (mapping.isDirectToFieldMapping()) {
DirectToFieldMapping directMapping = (DirectToFieldMapping) mapping;
// oldFieldName is something like "foo_bar.ID"
String oldFieldName = directMapping.getFieldName();
String newFieldName = camelCaseToUnderscore( oldFieldName ); // wrong
directMapping.setFieldName( newFieldName );
}
}
}