我用Spring Data JPA和Hibernate创建了一个Spring Boot 1.3.5 POC(这个版本的Spring Boot中的4.3.11.Final).我的后端数据库是Microsoft SQL Server,我们对数据库对象的标准命名约定是pascal case(例如MySchema.MyTable.MyColumn).我使用javax.persistence.Table和javax.persistence.Column注释来设置名称,并将spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.EJB3NamingStrategy添加到我的application.properties文件中.
一切都很完美.我甚至更新到Spring Boot 1.3.6没有任何问题.
现在我转到使用Hibernate 5.0.9.Final的Spring Boot 1.4.0.RELEASE,并且不推荐使用spring.jpa.hibernate.naming-strategy属性,而选择spring.jpa.hibernate.naming.strategy.我更改了该属性名称,但保留了EJB3NamingStrategy值.我还更改了其他已弃用的元素:
现在,生成的SQL使用默认的camel情况来强调命名约定,而不是我使用EJB3NamingStrategy的pascal情况.
//application.properties
spring.data.jpa.repositories.enabled=true
spring.data.solr.repositories.enabled=false
spring.data.mongodb.repositories.enabled=false
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.EJB3NamingStrategy
#spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
//hibernate.properties
hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
hibernate.format_sql=true
//Principal.java
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import org.hibernate.envers.AuditTable;
import org.hibernate.envers.Audited;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Entity
@Table(name="Principal", schema="Security")
@Audited
@AuditTable(value = "Principal", schema = "Audit")
public class Principal {
private static final Logger …Run Code Online (Sandbox Code Playgroud)