diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml index f6838e2a..a16bece2 100644 --- a/DataRoom/dataroom-core/pom.xml +++ b/DataRoom/dataroom-core/pom.xml @@ -6,7 +6,7 @@ com.gccloud dataroom - 2.0.1.2024011701.Alpha + 2.0.1.2024032201.Alpha dataroom-core diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java index 38e3d17a..01913bff 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/DataRoomObjectMapperConfiguration.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.datatype.jsonorg.JSONArraySerializer; import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule; import com.gccloud.dataroom.core.constant.DataRoomConst; import lombok.extern.slf4j.Slf4j; +import oracle.sql.CLOB; import org.json.JSONArray; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -36,10 +37,10 @@ public class DataRoomObjectMapperConfiguration { // 不注册该模块会导致 @RequestBody 为 JSONObject 时属性无法填充 JsonOrgModule jsonOrgModule = new JsonOrgModule(); objectMapper.registerModule(jsonOrgModule); - SimpleModule simpleModule = new SimpleModule(); // 解决 接口响应中包含JSONObject 或 JSONArray时, 序列化失败,变成{empty: false} 的问题 simpleModule.addSerializer(JSONArray.class, JSONArraySerializer.instance); + simpleModule.addSerializer(CLOB.class, new OracleClobSerializer()); objectMapper.registerModule(simpleModule); log.info(DataRoomConst.Console.LINE); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.java new file mode 100644 index 00000000..88b2bedd --- /dev/null +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/config/OracleClobSerializer.java @@ -0,0 +1,42 @@ +package com.gccloud.dataroom.core.config; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import lombok.extern.slf4j.Slf4j; +import oracle.sql.CLOB; +import org.apache.commons.lang3.exception.ExceptionUtils; + +import java.io.IOException; +import java.sql.Clob; + +/** + * 解决oracle CLOB类型返回序列化问题 + * @author hongyang + * @version 1.0 + * @date 2024/03/22 17:30 + */ +@Slf4j +public class OracleClobSerializer extends JsonSerializer { + + @Override + public void serialize(CLOB clob, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeString(clobToString(clob)); + } + + /** + * Clob字段处理 + * + * @param clob + * @return + */ + public static String clobToString(Clob clob) { + String content = ""; + try { + content = clob.getSubString(1, (int) clob.length()); + } catch (Exception e) { + log.error(ExceptionUtils.getStackTrace(e)); + } + return content; + } +} diff --git a/DataRoom/dataroom-server/pom.xml b/DataRoom/dataroom-server/pom.xml index ec23f51f..16466114 100644 --- a/DataRoom/dataroom-server/pom.xml +++ b/DataRoom/dataroom-server/pom.xml @@ -6,7 +6,7 @@ com.gccloud dataroom - 2.0.1.2024011701.Alpha + 2.0.1.2024032201.Alpha dataroom-server diff --git a/DataRoom/pom.xml b/DataRoom/pom.xml index ec14ff2e..41f82799 100644 --- a/DataRoom/pom.xml +++ b/DataRoom/pom.xml @@ -5,7 +5,7 @@ com.gccloud dataroom - 2.0.1.2024011701.Alpha + 2.0.1.2024032201.Alpha pom dataroom