Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GSON库中的异常:-java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段_Java_Json_Oracle_Gson_Mybatis - Fatal编程技术网

GSON库中的异常:-java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段

GSON库中的异常:-java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段,java,json,oracle,gson,mybatis,Java,Json,Oracle,Gson,Mybatis,我有一个地图列表,我想把它转换成JSON。我正在使用GSON进行转换,但它给出了如下错误 java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段 我正在传递这个名为results的对象,它是使用myBatis获得的 [{EMAIL_TEMPLATE_ID=1, CREATED_BY=owner, COMMON_BODY=oracle.sql.CLOB@1d8b47a, COMMON

我有一个地图列表,我想把它转换成JSON。我正在使用GSON进行转换,但它给出了如下错误

java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段

我正在传递这个名为results的对象,它是使用myBatis获得的

[{EMAIL_TEMPLATE_ID=1, CREATED_BY=owner, COMMON_BODY=oracle.sql.CLOB@1d8b47a, COMMON_SUBJECT=This os common subject line in notification table, CREATED_DATE=2020-02-03 00:00:00.0, COMMON_CC_USER=abc@gmail.com, STATUS=pending, NOTIFICATION_ID=1, HAS_ATTACHMENT=y, UPDATED_BY=tester, EXPIRY_DAYS=10, SCHEDULE_TIME=2, COMMON_TO_USER=xyz@gmail.com, UPDATED_DATE=2020-02-03 00:00:00.0, NOTIFICATION_TYPE=dist}]
对于上面的对象,它会给我错误,但对于下面的对象,它工作得很好

[{CONTENT_TYPE=abc, ID=1, NAME=abc}, {CONTENT_TYPE=xyz, ID=2, NAME=xyz}]
编辑:-

数据库查询:-


CREATE TABLE "TESTDB"
(   
    "NOTIFICATION_ID" NUMBER,
    "NOTIFICATION_TYPE" VARCHAR2(50) ,
    "SITE_ID" VARCHAR2(100),
    "CONTENT_TYPE" VARCHAR2(50),
    "STATUS" VARCHAR2(50) ,
    "COMMON_SUBJECT" VARCHAR2(300),
    "COMMON_BODY" CLOB,
    "COMMON_TO_USER" VARCHAR2(2500),
    "COMMON_CC_USER" VARCHAR2(2500),
    "COMMON_BCC_USER" VARCHAR2(2500),
    "EMAIL_TEMPLATE_ID" NUMBER,
    "HAS_ATTACHMENT" CHAR(1),
    "CREATED_DATE" TIMESTAMP ,
    "CREATED_BY" VARCHAR2(50),
    "UPDATED_DATE" TIMESTAMP,
    "UPDATED_BY" VARCHAR2(50),
    "EXPIRY_DAYS" NUMBER,
    "SCHEDULE_TIME" VARCHAR2(100),
    "SP_SEND_STATUS" VARCHAR2(50),
    "SP_SEND_DATE" TIMESTAMP,
    "SP_SEND_MSG" VARCHAR2(400),
    "SP_REQUESTID" VARCHAR2(50),
    CONSTRAINT N PRIMARY KEY (NOTIFICATION_ID)
);
COMMIT;
myBatis制图器:-

<?xml version = "1.0" encoding = "UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace = "ecm">  
    <select id = "ecmrepo_read" resultType = "java.util.HashMap">
        select * from TESTDB 
        <where>
            <foreach item = "entry" index = "key" separator = "AND" collection = "WHERE">
                 ${key} = #{entry}
            </foreach>

        </where>
    </select>

使用
Map
作为结果类型时,MyBatis可能不会选择您选择的类型处理程序。
您可能需要定义一个结果图来帮助MyBatis


从TESTDB中选择*
${key}=#{entry}

或者,您可以创建并使用POJO而不是
HashMap

我们可能需要更多信息。请添加表定义和MyBatis相关类、映射器等(即在我们这边重现问题所需的信息)。这将是最好的,如果你能提供一个小的复制项目,如。我补充了更多的信息。如果需要更多信息,请告诉我。
<?xml version = "1.0" encoding = "UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace = "ecm">  
    <select id = "ecmrepo_read" resultType = "java.util.HashMap">
        select * from TESTDB 
        <where>
            <foreach item = "entry" index = "key" separator = "AND" collection = "WHERE">
                 ${key} = #{entry}
            </foreach>

        </where>
    </select>
List<Map<String,Object>> results =  session.selectList("ecm.ecmrepo_read",searchparams);
String json = gson.toJson(results);