hibernate 使用ddl-auto进行休眠:更新总是更改某些字段

oknwwptz  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(172)

我有一个包含spring数据的spring-boot项目。Myapplication.yml包含以下属性:

spring:
  jpa:
    hibernate:
      ddl-auto: update

每次运行项目时,Hibernate都会为dateenumfloat/double字段执行ALTER TABLE语句。
Hibernate show_sql日志:

Hibernate: alter table activity_data modify column points  float(53)
Hibernate: alter table activity_event modify column end_time  datetime(6)
Hibernate: alter table activity_event modify column start_time  datetime(6)
Hibernate: alter table giveaways modify column state  enum ('CREATED','ENDED','GOING') not null

... and some more

它不会真正影响项目或导致任何错误,但它确实困扰我,并可能导致应用程序启动较慢
你知道有什么配置可以禁用它吗?也许是因为hibernate无法判断这些列设置是否是最新的?
我为 double 字段尝试的一件事是,我尝试手动设置列刻度的手动值:

@Column(name = "POINTS", scale = -1)
private double points;

但什么都没改变

0kjbasz6

0kjbasz61#

如果你不想在启动时改变数据库,你可以在application.yml中设置属性,如下所示:

ddl-auto: none

或者需要检查表和实体的Map时

ddl-auto: validate

但是,这些属性意味着在添加新实体时必须手动创建表。

相关问题