Я не могу победить со стратегией именования. Конечно, я уже читал:
hibernate ImprovedNamingStrategy переопределяет имя таблицы в сущности, а ImprovedNamingStrategy больше не работает в Hibernate 5
Я уже изменил AnnotationConfiguration на Configuration и теперь у меня есть:
Код: Выделить всё
private void reloadHibernateSessionFactoryFromConf(Map prop) {
try {
sessionFactory = null;
Configuration config = new Configuration(); //hibernate5
for(Map.Entry entry : prop.entrySet()) {
config.setProperty(entry.getKey(), entry.getValue());
}
if(namingStrategy!=null){
configuration.setNamingStrategy(namingStrategy); //code which I think spoil application
}
if(annotatedEntityPackages!=null){
addAnnotatedClasses(config);
}
sessionFactory = config.configure().buildSessionFactory();
} catch (final HibernateException e) {
LOGGER.error("SessionFactory creation failed", e);
}
Код: Выделить всё
Пример класса:
Код: Выделить всё
public class UpperCaseNamingStrategy extends PhysicalNamingStrategyStandardImpl {
@Override
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
return context.getIdentifierHelper().toIdentifier(
StringUtils.upperCase(name.getText(), Locale.ENGLISH));
}
@Override
public Identifier toPhysicalCatalogName(final Identifier name, final JdbcEnvironment context) {
return context.getIdentifierHelper().toIdentifier(
StringUtils.upperCase(name.getText(), Locale.ENGLISH));
}
@Override
public Identifier toPhysicalSchemaName(final Identifier name, final JdbcEnvironment context) {
return context.getIdentifierHelper().toIdentifier(
StringUtils.upperCase(name.getText(), Locale.ENGLISH));
}
@Override
public Identifier toPhysicalSequenceName(final Identifier name, final JdbcEnvironment context) {
return context.getIdentifierHelper().toIdentifier(
StringUtils.upperCase(name.getText(), Locale.ENGLISH));
}
@Override
public Identifier toPhysicalTableName(final Identifier name, final JdbcEnvironment context) {
return context.getIdentifierHelper().toIdentifier(
StringUtils.upperCase(name.getText(), Locale.ENGLISH));
}
}
org.hibernate.MappingException: ассоциация из таблицы X относится к несопоставленному классу: Y
at org.hibernate .cfg.Configuration.buildSessionFactory(Configuration.java:709)
в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:746)
в репозитории.legacy.HibernateSessionManager.reloadHibernateSessionFactoryFromConf< /strong>
Итак, какова реализация org.hibernate.cfg.ImprovedNamingStrategy в hibernate 5?
Подробнее здесь: https://stackoverflow.com/questions/791 ... on-an-asso