2017-01-29 50 views
0

我的spring引導項目在實體類中使用JPA hibernate註釋。 我有我自己的通用存儲庫,我NOT從JPA的entityManagerFactory獲取Hibernate SessionFactory。 創建新表和列時會出現問題。在數據庫上使用下劃線創建駱駝列。 我將application.yml的命名策略更改爲org.hibernate.cfg.EJB3NamingStrategy,但沒有任何修正。更改Hibernate 5命名策略+彈簧啓動+ anootation

application.yml:

jpa: 
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect 
    show-sql: true 
    hibernate: 
     ddl-auto: update 
     naming-strategy: org.hibernate.cfg.EJB3NamingStrategy 

在我自己的通用版本庫中獲取Hibernate的Session(不使用的EntityManager):

@Autowired 
public SessionFactory sessionFactory; 

public Session getSession() { 
    try { 
     return sessionFactory.getCurrentSession(); 
    } catch (HibernateException e) { 
     System.out.println(e.getMessage().toString()); 
    } 
    return sessionFactory.openSession(); 
} 

我用來創建擴展ImplicitNamingStrategyJpaCompliantImpl,但沒有happend定製namingStrategy!

有什麼不對?

What i want:

列駱駝數據庫中創建。甚至桌子!

+0

在這裏看到:https://github.com/spring-projects/spring-boot/issues/2129 –

回答

1

使用Hibernate 5,你應該使用不同的屬性:

spring.jpa.hibernate.naming.implicit-strategy= # Hibernate 5 implicit naming strategy fully qualified name. 
spring.jpa.hibernate.naming.physical-strategy= # Hibernate 5 physical naming strategy fully qualified name. 

正如你可以在這裏看到:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#common-application-properties

+0

只要提及物理策略也行得通 –