Hibernate nomear estratégia

votos
7

Eu estou construindo um webservice descansar com Primavera (Boot) e estou tentando usar hibernação como mapeador ORM sem qualquer configuração XML.

Basicamente, eu tenho que trabalhar, mas eu estou preso com um problema de configuração. I instanciar LocalContainerEntityManagerFactoryBeancomo @Beanem um arquivo @Configuration.

Eu defini hibernate.ejb.naming_strategycomo no exemplo a seguir -> isto parece trabalhar para criar as tabelas, se eles não existem (os nomes das colunas são camelCase como nas minhas aulas @Entity), mas quando uma consulta é executada, hibernate esquece sobre essa configuração de nomeação e tenta usar outro tipo de nomear estratégia com under_score_attributes -> obviamente, essas consultas falhar. Existe alguma outra propriedade Eu preciso definir?

Ou uma outra maneira de configurar as propriedades de um modo preferido , sem a adição de um cfg.xmlou 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();
Publicado 02/10/2013 em 21:28
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

Você já tentou definir esta propriedade particular usando propriedades programáticas? Ou um hibernate.propertiesarquivo na raiz do pacote? Ou uma propriedade do sistema JVM? Todos são descritos aqui .

Da minha experiência, há, por vezes difícil de diagnosticar problemas Hibernate se você insistir em não utilizar qualquer XML (que seria a minha preferência também). Se nada mais funciona, você pode ser forçado a definir um arquivo de configuração, pelo menos.

Respondeu 29/10/2013 em 14:43
fonte usuário

votos
-2

Eu tenho a solução agora.

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

O JpaAutoConfiguration deve ser excluída. Ainda assim, eu acho que isso pode ser um erro, como normalmente ele automaticamente deve "ficar para trás" quando eu uso meu próprio @Configuration.

Respondeu 29/10/2013 em 15:22
fonte usuário

votos
22

HibernateJpaAutoConfigurationpermite que a estratégia de nomenclatura (e todas as outras propriedades da APP) para ser fixado através da configuração externa local. Por exemplo, em application.properties:

spring.jpa.hibernate.ddl_auto: create
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.EJB3NamingStrategy
Respondeu 04/11/2013 em 15:39
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more