Стратегия именования Hibernate
Я создаю веб-сервис REST с Spring (Boot) и пытаюсь использовать hibernate как ORM mapper без какой-либо конфигурации xml.
Я в основном получил его для работы, но я застрял с проблемой конфигурации.
Я инстанцировать LocalContainerEntityManagerFactoryBean
as @Bean
в файле @Configuration.
Я hibernate.ejb.naming_strategy
как в следующем примере -> это, похоже, работает для создания таблиц, если они не существуют (имена столбцов-camelCase, как в моих классах @ Entity), но когда запрос выполненный, hibernate "забывает" об этой конфигурации именования и пытается использовать другой вид стратегии именования с under_score_attributes --> очевидно, что эти запросы терпят неудачу. Есть ли какое-либо другое свойство, которое мне нужно установить?
или другой способ настройки свойств предпочтительно без добавлять cfg.xml
или persistence.xml
?
LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
Properties props = new Properties();
props.put("hibernate.hbm2ddl.auto", "create");
props.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.DefaultNamingStrategy");
lef.setJpaProperties(props);
lef.afterPropertiesSet();
3 ответов
HibernateJpaAutoConfiguration
позволяет задавать стратегию именования (и все другие свойства JPA) через локальную внешнюю конфигурацию. Например, в application.properties
:
spring.jpa.hibernate.ddl_auto: create
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.EJB3NamingStrategy
вы пытались установить это конкретное свойство с помощью программных свойств? Или hibernate.properties
файл в корне пакета? Или системное свойство JVM? Все описаны здесь.
по моему опыту, иногда трудно диагностировать проблемы спящего режима, если вы настаиваете на том, чтобы не использовать XML (что было бы моим предпочтением). Если ничего не работает, вы можете быть вынуждены определить файл конфигурации по крайней мере.
теперь у меня есть решение.
@EnableAutoConfiguration(exclude={HibernateJpaAuto Configuration.class})
JpaAutoConfiguration должен быть исключен. Тем не менее, я думаю, что это может быть ошибка, так как обычно она должна автоматически "отступать", когда я использую свою собственную @Configuration.