Framework/Springboot
PostgresSQL 사용시 엔티티의 Default 값 설정하기
IFLA
2024. 2. 9. 09:00
목차
스프링부트에서 Entity 를 선언을 하면 프로젝트가 실행될 때 없는 테이블이 있는 경우에는 테이블을 생성한다. 테이블을 생성할 때 default 값이라고 설정한 값이 추가가 안 된다.
package com.study.file_upload.entity;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.DynamicInsert;
import org.springframework.data.annotation.CreatedDate;
import java.time.LocalDateTime;
@Entity
@Getter
@DynamicInsert
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class UploadFile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, unique = true)
private long id;
@Column(name = "original_name", nullable = false)
private String originalName;
@Column(name = "save_name", nullable = false)
private String saveName;
@Column(name = "size", nullable = false)
private long size;
@ColumnDefault("N")
@Column(name = "delete_yn")
private String deleteYn;
@CreatedDate
@Column(name = "created_at")
private LocalDateTime createdAt;
@Builder
public UploadFile(String originalName, String saveName, long size) {
this.originalName = originalName;
this.saveName = saveName;
this.size = size;
}
}
이 코드에서 delete_yn 컬럼의 @ColumnDefault 를 이용하면 Default 값을 설정할 수 있지만 insert 로 추가될 때 값이 추가된다. 테이블 생성할 때는 추가가 안되는 걸 콘솔창에서 확인할 수 있다.
@Column(columnDeifinition = "varchar(255) default 'N'") 으로 @Column 어노테이션의 속성에 추가를 하면 테이블 생성시 default 값이 추가된다.