7

我正在使用 Spring(Boot)构建一个 REST Web 服务,并尝试在没有任何 xml 配置的情况下使用休眠作为 orm 映射器。

我基本上让它工作了,但我遇到了配置问题。我在 @Configuration 文件中实例化LocalContainerEntityManagerFactoryBean@Bean

我设置hibernate.ejb.naming_strategy在下面的示例中设置 -> 如果它们不存在,这似乎适用于创建表(列名是我的@Entity类中的camelCase)但是当执行查询时,休眠“忘记”这个命名配置和尝试使用带有 under_score_attributes 的另一种命名策略 --> 显然这些查询失败了。我还需要设置其他属性吗?

或者另一种配置属性的方式最好添加cfg.xmlpersistence.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();
4

3 回答 3

22

HibernateJpaAutoConfiguration允许通过本地外部配置设置命名策略(和所有其他 JPA 属性)。例如,在application.properties

spring.jpa.hibernate.ddl_auto: create
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.EJB3NamingStrategy
于 2013-11-04T14:39:51.860 回答
0

您是否尝试过使用编程属性设置此特定属性?还是hibernate.properties包根目录中的文件?还是 JVM 系统属性?所有的都在这里描述。

根据我的经验,如果您坚持不使用任何 XML(这也是我的偏好),有时很难诊断 Hibernate 问题。如果没有其他方法,您可能至少会被迫定义一个配置文件。

于 2013-10-29T13:43:47.110 回答
-2

我现在得到了解决方案。

@EnableAutoConfiguration(exclude={HibernateJpaAuto Configuration.class}) 

必须排除 JpaAutoConfiguration。我仍然认为这可能是一个错误,因为通常当我使用我自己的@Configuration 时它应该自动“退后”。

于 2013-10-29T14:22:14.277 回答