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

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

Сообщение Anonymous »

Я переношу приложение из Hibernate 4 в Hibernate 5.
Я не могу победить со стратегией именования. Конечно, я уже читал:
hibernate ImprovedNamingStrategy переопределяет имя таблицы в сущности, а ImprovedNamingStrategy больше не работает в Hibernate 5
В hibernate.cfg.xml У меня есть оба :



Я уже изменил 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: ассоциация из таблицы BONUS_HIS относится к несопоставленному классу : domain.Instrument
в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:709)
в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:746)
в репозитории.legacy.HibernateSessionManager.reloadHibernateSessionFactoryFromConf
Итак, что такое реализация org.hibernate.cfg.ImprovedNamingStrategy в спящем режиме 5?
@Edit
На самом деле я использовал:
public class PhysicalNamingStrategyImpl extends PhysicalNamingStrategyStandardImpl implements Serializable {

public static final PhysicalNamingStrategyImpl INSTANCE = new PhysicalNamingStrategyImpl();

@Override
public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
return new Identifier(addUnderscores(name.getText()), name.isQuoted());
}

protected static String addUnderscores(String name) {
final StringBuilder buf = new StringBuilder( name.replace('.', '_') );
for (int i=1; i

Подробнее здесь: https://stackoverflow.com/questions/791 ... on-an-asso
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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