Skip to content

Instantly share code, notes, and snippets.

@pangda0xff
Created December 21, 2018 07:04
Show Gist options
  • Save pangda0xff/e6bc634c68e8eed89651a686dc95f109 to your computer and use it in GitHub Desktop.
Save pangda0xff/e6bc634c68e8eed89651a686dc95f109 to your computer and use it in GitHub Desktop.
Hibernate camel to underscore
package com.keruyun.ca.monitor.utils;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
public class CustomPhysicalNamingStrategy implements PhysicalNamingStrategy {
@Override
public Identifier toPhysicalCatalogName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
if(identifier == null) {
return jdbcEnv.getCurrentCatalog();
} else {
return convertToSnakeCase(identifier);
}
}
@Override
public Identifier toPhysicalColumnName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
return convertToSnakeCase(identifier);
}
@Override
public Identifier toPhysicalSchemaName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
return convertToSnakeCase(identifier);
}
@Override
public Identifier toPhysicalSequenceName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
return convertToSnakeCase(identifier);
}
@Override
public Identifier toPhysicalTableName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
return convertToSnakeCase(identifier);
}
private Identifier convertToSnakeCase(final Identifier identifier) {
final String regex = "([a-z])([A-Z])";
final String replacement = "$1_$2";
final String newName = identifier.getText()
.replaceAll(regex, replacement)
.toLowerCase();
return Identifier.toIdentifier(newName);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment