Я переношу приложение из 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
Ошибка первоначального создания SessionFactory — org.hibernate.MappingException: ассоциация из таблицы X относится к нес ⇐ JAVA
Программисты JAVA общаются здесь
1731402601
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));
}
}
но все же я вижу в журналах:
[b]org.hibernate.MappingException: ассоциация из таблицы BONUS_HIS относится к несопоставленному классу : domain.Instrument[/b]
в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:709)
в org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:746)
в репозитории.legacy.HibernateSessionManager.[b]reloadHibernateSessionFactoryFromConf[/b]
Итак, что такое реализация 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
Подробнее здесь: [url]https://stackoverflow.com/questions/79133438/initial-sessionfactory-creation-failed-org-hibernate-mappingexception-an-asso[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия