Entity Class name is transformed into SQL table name with underscores
Use this in your appplication.properties.
spring.jpa.hibernate.naming.physical-strategy=
org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming.implicit-strategy=
org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
For hibernate v5:
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Spring by default uses org.springframework.boot.orm.jpa.SpringNamingStrategy
which splits camel case names with underscore. Try setting spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.EJB3NamingStrategy
in application.properties
. Check out this and this for more info.
For Spring Boot 2 (checked with 2.2.6.RELEASE
) it should be configuration yml
file:
spring:
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
So you could have model like:
@Table(name = "tblDepartments")
public class Department {
@Id
@Column(name = "dpID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotEmpty
@Size(min = 1, max = 25)
@Column(name = "dpName", length = 25)
private String name;
and populate tables at startup with data.sql
:
INSERT INTO tblDepartments (dpName) VALUES ('Gryffindor');
INSERT INTO tblDepartments (dpName) VALUES ('Hufflepuff');