2013-10-02 17 views
7

나는 Spring (Root)으로 REST 웹 서비스를 구축 중이며 xml 구성없이 orm 매퍼로 최대 절전 모드를 사용하려고한다.Hibernate 명명 전략

기본적으로 작동하도록 설정되었지만 구성 문제가 있습니다. @Configuration 파일에서 LocalContainerEntityManagerFactoryBean을 @Bean으로 인스턴스화합니다. 다음 예제에서와 같이 hibernate.ejb.naming_strategy를 설정합니다. -> 이것이 존재하지 않으면 열 이름이 camelCase와 같습니다 (그러나 @Entity 클래스에서와 같이). 그러나 쿼리가 실행될 때 최대 절전 모드에서는 "forgets "이 명명 구성에 대해 설명하고 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(); 

답변

22

HibernateJpaAutoConfiguration은 로컬 외부 구성을 통해 명명 전략 (및 기타 모든 JPA 특성)을 설정할 수 있습니다. 예를 들어, application.properties :

spring.jpa.hibernate.ddl_auto: create 
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.EJB3NamingStrategy 
+0

감사합니다. 이것은 그것을하는 적당한 방법과 같이 보인다! – Alex

+0

하지만 이러한 속성에 대한 설명서는 어디에서 찾을 수 있습니까?! – Alex

+0

내 의견에 대답 : https://github.com/spring-projects/spring-boot/blob/master/docs/application.yml 이것은 매우 유용합니다 ... 모든 자동 구성 속성에 대해 – Alex

0

프로그래밍 속성을 사용하여이 특정 속성을 설정해 보았습니까? 또는 패키지 루트에 hibernate.properties 파일이 있습니까? 또는 JVM 시스템 속성? 모든 설명은 here입니다.

필자의 경험에 비추어 볼 때, XML을 사용하지 않으려 고하면 (심지어 필자의 선호도 일 것이다) 내 경험상, 때때로 Hibernate 문제를 진단하기가 어렵다. 그 밖의 것이 없다면 적어도 설정 파일을 정의해야 할 수도 있습니다.

-2

지금 해결책을 얻었습니다.

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

JpaAutoConfiguration을 제외해야합니다. 아직도 이것은 내가 버그일지도 모른다고 생각합니다. 보통 @Configuration을 사용할 때 자동으로 "뒤로 물러 설 것"입니다.

+0

이것은 봄 부팅을 사용하는 목적을 다소 상실합니다. 아래 내 대답을 참조하십시오. –