Hologres数据查询时PgArray问题

问题记录

com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.83, class org.postgresql.jdbc.PgResultSet, fieldName : resultSet
        at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:541)
        at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:154)
        at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:360)
        at com.alibaba.fastjson.serializer.ASMSerializer_18_PgArray.write(Unknown Source)
        at com.alibaba.fastjson.serializer.ListSerializer.write(ListSerializer.java:135)
        at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:360)
        at com.alibaba.fastjson.serializer.JSONSerializer.writeWithFieldName(JSONSerializer.java:338)
        at com.alibaba.fastjson.serializer.ASMSerializer_13_DataQueryResultDTO.write(Unknown Source)
        at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:312)
        at com.alibaba.fastjson.JSON.toJSONString(JSON.java:793)
        at com.alibaba.fastjson.JSON.toJSONString(JSON.java:731)
        at com.alibaba.fastjson.JSON.toJSONString(JSON.java:688)

Caused by: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgResultSet.getHoldability() is not yet implemented.
        at org.postgresql.Driver.notImplemented(Driver.java:699)
        at org.postgresql.jdbc.PgResultSet.getHoldability(PgResultSet.java:3690)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.alibaba.fastjson.util.FieldInfo.get(FieldInfo.java:571)
        at com.alibaba.fastjson.serializer.FieldSerializer.getPropertyValueDirect(FieldSerializer.java:143)
        at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:284)
        ... 110 common frames omitted

原因:resultSet中某个字段值类型是PgArray,Json序列化报错,在遍历rs时添加 object instanceof PgArray处理

while (rs.next()) {
                LinkedHashMap jsonObj = new LinkedHashMap<String, Object>();
                // 遍历每一列
                for (int i = 1; i <= columnCount; i++) {
                    String columnName = metaData.getColumnLabel(i).replace("\"", "");
                    Object object = rs.getObject(columnName);
                    if (object instanceof ClickHouseArray) {
                        ClickHouseArray result = (ClickHouseArray) object;
                        object = result.getArray();
                    } else if (object instanceof PrestoArray) {
                        PrestoArray result = (PrestoArray) object;
                        object = result.getArray();
                    } else if (object instanceof PgArray) {
                        PgArray result = (PgArray) object;
                        object = result.getArray();
                    } else if (object instanceof Long) {
                        object = String.valueOf(object);
                    }
                    jsonObj.put(columnName, object);
                }
                list.add(jsonObj);
            }

  

 

posted @ 2024-09-05 16:58  LUDAGOGO  阅读(36)  评论(0)    收藏  举报