[英]postgresql migration
嗨,我在我的實體中有這個它是枚舉所以在我的數據庫中它保存為序數 1 或 0
@Column(name = "status")
private ClientStatusEnum status;
這是我的遷移
CREATE TABLE public.clients
(
id bigserial NOT NULL,
created_at timestamp NOT NULL,
removed bool NOT NULL DEFAULT false,
removed_at timestamp NULL,
updated_at timestamp NULL,
authorities varchar(255) NULL,
last_active_at timestamp NULL,
logged_in_at timestamp NULL,
"password" varchar(255) NULL,
username varchar(255) NULL,
image_url varchar(255) NULL,
"name" varchar(255) NULL,
phone_number varchar(255) NULL,
status int4 NULL, /////////////////////////////this is status //////////
surname varchar(255) NULL,
profile_image_url varchar(255) NULL,
CONSTRAINT clients_pkey PRIMARY KEY (id)
);
現在我把這個改成了這個
@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
@Column(name = "status")
private ClientStatusEnum status;
將其保存為字符串
所以我需要像上面那樣編寫 migraion 以將 tht in status 更改為這種新的狀態類型,但我有狀態為 0 或 1 的客戶我需要在遷移文件中寫入 sql,使其狀態為:0 1 更改 REGISTERED 或 ACTIVE ,新來者已經獲得了這種新方式狀態
這是我的枚舉
@Getter
@AllArgsConstructor
public enum ClientStatusEnum {
REGISTERED,
ACTIVE,
INTEGRATED
}
請幫我
您是否嘗試編寫一個帶有附加臨時列的遷移,其中將寫入枚舉值?
遷移命令示例:
alter table public.clients
add column status_tmp varchar(25);
update public.clients
set status_tmp = 'REGISTERED'
where status = 0;
update public.clients
set status_tmp = 'ACTIVE'
where status = 1;
alter table public.clients
drop column status;
alter table public.clients
rename column status_tmp to status;
在枚舉字段上面的實體class中,只需要@Enumerated注解即可。 @Column 注釋是不必要的,因為 class 中的字段與數據庫中的名稱匹配。
@Enumerated(EnumType.STRING)
private ClientStatusEnum status;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.