Ошибка первоначального создания SessionFactory — org.hibernate.MappingException: ассоциация из таблицы X относится к несJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка первоначального создания SessionFactory — org.hibernate.MappingException: ассоциация из таблицы X относится к нес

Сообщение Anonymous »

Я переношу приложение из Hibernate 4 в Hibernate 5.
Я не могу победить со стратегией именования. Конечно, я уже читал:
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);
}
и namingStrategy поставил: Я уже пытался прокомментировать Configuration.setNamingStrategy(namingStrategy); вообще. Я пробовал Configuration.setPhysicalNamingStrategy(PhysicalNamingStrategyImpl.INSTANCE);, но также CamelCase, UpperCase и т. д., и каждый раз ошибка одна и та же. Все, что я делаю с этим классом namingStrategy, не будет сопоставлено.
Пример класса:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»