我正在使用Spring(Boot)构建REST Web服务,并尝试使用没有任何xml配置的hibernate作为orm映射器。
我基本上可以使用它,但是我遇到了配置问题。我实例LocalContainerEntityManagerFactoryBean作为@Bean一个@Configuration文件。
LocalContainerEntityManagerFactoryBean
@Bean
我hibernate.ejb.naming_strategy按照以下示例进行设置->如果表不存在(似乎列名像我的@Entity类中的camelCase一样),这似乎可以创建表,但是当执行查询时,hibernate“忘记”此命名配置,并且尝试对under_score_attributes使用另一种命名策略->显然,这些查询失败。我还需要设置其他属性吗?
hibernate.ejb.naming_strategy
或者另一种配置属性的方式,最好 不 添加cfg.xml或persistence.xml?
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();
HibernateJpaAutoConfiguration允许通过本地外部配置来设置命名策略(以及所有其他JPA属性)。例如,在application.properties:
HibernateJpaAutoConfiguration
application.properties
spring.jpa.hibernate.ddl_auto: create spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.EJB3NamingStrategy