The naming behavior is defined by the default implementation of the interface NamingStrategy
From reference documentation, section 4.4.3 of version 1.0.2:
When you use the standard implementations of CrudRepository that Spring Data
JDBC provides, they expect a certain table structure. You can tweak that by
providing a NamingStrategy in your application context.
The default implementation has the following behavior (from javadoc version 1.0.2):
Defaults to no schema, table name based on Class and column name based on
RelationalPersistentProperty with name parts of both separated by '_'.
So create a bean which implements NamingStrategy
in register it in your application context.
This is an example from @keddok comment:
@Configuration
@EnableJdbcRepositories
public class MetricStoreRepositoryConfig extends JdbcConfiguration {
@Autowired
private DataSource dataSource;
@Bean
NamedParameterJdbcOperations operations() {
return new NamedParameterJdbcTemplate(dataSource);
}
@Bean
PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
@Bean
NamingStrategy namingStrategy() {
return new NamingStrategy() {
@Override
public String getSchema() {
return "metric";
}
};
}
}