diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataEntity.java index 3a0886fe..ec6d8925 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataEntity.java @@ -51,14 +51,14 @@ public class MapSheetAnalDataEntity { private String dataCrsTypeName; @ColumnDefault("now()") - @Column(name = "created_dttm") + @Column(name = "created_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE DEFAULT now()") private ZonedDateTime createdDttm; @Column(name = "created_uid") private Long createdUid; @ColumnDefault("now()") - @Column(name = "updated_dttm") + @Column(name = "updated_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE DEFAULT now()") private ZonedDateTime updatedDttm; @Column(name = "updated_uid") @@ -79,13 +79,13 @@ public class MapSheetAnalDataEntity { private String dataState; @ColumnDefault("now()") - @Column(name = "data_state_dttm") + @Column(name = "data_state_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE DEFAULT now()") private ZonedDateTime dataStateDttm; - @Column(name = "anal_strt_dttm") + @Column(name = "anal_strt_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime analStrtDttm; - @Column(name = "anal_end_dttm") + @Column(name = "anal_end_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime analEndDttm; @Column(name = "anal_sec") diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataGeomEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataGeomEntity.java index 362d7b86..89254787 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataGeomEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetAnalDataGeomEntity.java @@ -60,13 +60,13 @@ public class MapSheetAnalDataGeomEntity { @Column(name = "data_uid") private Long dataUid; - @Column(name = "created_dttm") + @Column(name = "created_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private Instant createdDttm; @Column(name = "created_uid") private Long createdUid; - @Column(name = "updated_dttm") + @Column(name = "updated_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private Instant updatedDttm; @Column(name = "updated_uid") private Long updatedUid; diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataEntity.java index c30d41da..634f57f3 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataEntity.java @@ -25,7 +25,7 @@ public class MapSheetLearnDataEntity { @Column(name = "data_uid", nullable = false) private Long id; - @Column(name = "anal_end_dttm") + @Column(name = "anal_end_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime analEndDttm; @Size(max = 255) @@ -39,14 +39,14 @@ public class MapSheetLearnDataEntity { @Column(name = "anal_state", length = 20) private String analState; - @Column(name = "anal_strt_dttm") + @Column(name = "anal_strt_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime analStrtDttm; @Column(name = "compare_yyyy") private Integer compareYyyy; @ColumnDefault("now()") - @Column(name = "created_dttm") + @Column(name = "created_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE DEFAULT now()") private ZonedDateTime createdDttm; @Column(name = "created_uid") @@ -77,7 +77,7 @@ public class MapSheetLearnDataEntity { private String dataState; @ColumnDefault("now()") - @Column(name = "data_state_dttm") + @Column(name = "data_state_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE DEFAULT now()") private ZonedDateTime dataStateDttm; @Size(max = 255) @@ -95,11 +95,11 @@ public class MapSheetLearnDataEntity { @Column(name = "gukuin_used", length = 20) private String gukuinUsed; - @Column(name = "gukuin_used_dttm") + @Column(name = "gukuin_used_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime gukuinUsedDttm; @ColumnDefault("now()") - @Column(name = "updated_dttm") + @Column(name = "updated_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE DEFAULT now()") private ZonedDateTime updatedDttm; @Column(name = "updated_uid") diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataGeomEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataGeomEntity.java index 798bfef8..36f23060 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataGeomEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnDataGeomEntity.java @@ -52,7 +52,7 @@ public class MapSheetLearnDataGeomEntity { @Column(name = "class_before_prob") private Double classBeforeProb; - @Column(name = "created_dttm") + @Column(name = "created_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime createdDttm; @Column(name = "created_uid") @@ -70,7 +70,7 @@ public class MapSheetLearnDataGeomEntity { @Column(name = "map_sheet_num") private Long mapSheetNum; - @Column(name = "updated_dttm") + @Column(name = "updated_dttm", columnDefinition = "TIMESTAMP WITH TIME ZONE") private ZonedDateTime updatedDttm; @Column(name = "updated_uid") diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 4201c80b..4ae1abee 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -6,7 +6,7 @@ spring: jpa: show-sql: true hibernate: - ddl-auto: update # 로컬 개발환경에서는 자동 테이블 생성/업데이트 + ddl-auto: validate # 스키마 검증만 수행, 자동 변경하지 않음 properties: hibernate: default_batch_fetch_size: 100 # ✅ 성능 - N+1 쿼리 방지 diff --git a/src/main/resources/db/migration/fix_timestamp_columns.sql b/src/main/resources/db/migration/fix_timestamp_columns.sql new file mode 100644 index 00000000..48a19b51 --- /dev/null +++ b/src/main/resources/db/migration/fix_timestamp_columns.sql @@ -0,0 +1,66 @@ +-- Fix timestamp column type conversion issue +-- Run this if the Hibernate automatic schema update still fails + +-- For tb_map_sheet_anal_data +ALTER TABLE tb_map_sheet_anal_data + ALTER COLUMN anal_end_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING anal_end_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_anal_data + ALTER COLUMN anal_strt_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING anal_strt_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_anal_data + ALTER COLUMN created_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING created_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_anal_data + ALTER COLUMN updated_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING updated_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_anal_data + ALTER COLUMN data_state_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING data_state_dttm::TIMESTAMP WITH TIME ZONE; + +-- For tb_map_sheet_learn_data +ALTER TABLE tb_map_sheet_learn_data + ALTER COLUMN anal_end_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING anal_end_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_learn_data + ALTER COLUMN anal_strt_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING anal_strt_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_learn_data + ALTER COLUMN created_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING created_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_learn_data + ALTER COLUMN updated_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING updated_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_learn_data + ALTER COLUMN data_state_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING data_state_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_learn_data + ALTER COLUMN gukuin_used_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING gukuin_used_dttm::TIMESTAMP WITH TIME ZONE; + +-- For tb_map_sheet_learn_data_geom +ALTER TABLE tb_map_sheet_learn_data_geom + ALTER COLUMN created_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING created_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_learn_data_geom + ALTER COLUMN updated_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING updated_dttm::TIMESTAMP WITH TIME ZONE; + +-- For tb_map_sheet_anal_data_geom +ALTER TABLE tb_map_sheet_anal_data_geom + ALTER COLUMN created_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING created_dttm::TIMESTAMP WITH TIME ZONE; + +ALTER TABLE tb_map_sheet_anal_data_geom + ALTER COLUMN updated_dttm SET DATA TYPE TIMESTAMP WITH TIME ZONE + USING updated_dttm::TIMESTAMP WITH TIME ZONE; \ No newline at end of file