在Postgres上使用JPA / Spring Boot生成标题区分大小写的字段

时间:2019-05-14 13:06:58

标签: java postgresql spring-boot jpa

我有一个这样的POJO(Groovy)

class User {
  @Column(name = 'Username')
  String username
  @Column(name = 'EmailAddress')
  String emailAddress
}

我似乎并没有强迫JPA生成这样的模式:

create table User (
  Username varchar(64),
  EmailAddress varchar(64)
)

我得到的是username varcharemail_address varchar。可以设置哪些配置选项来解决此问题?

2 个答案:

答案 0 :(得分:2)

在PostgreSQL中,未加引号的名称不区分大小写。 因此,用户名和用户名相同。

如果要使用区分大小写的名称,则必须将名称用双引号引起来。

但是我建议不要使用区分大小写的名称。

关于长度YCF_L正确,@Column批注中缺少长度参数。

@Column(name = 'Username', length = 64)

答案 1 :(得分:0)

您必须使用postGresql方言才能使用区分大小写的表名,将方言更新/添加到PostgreSQLDialectPostgreSQL82Dialect

修改要使用的application.properties,

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect