GSON库中的异常:-java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段
我有一个地图列表,我想把它转换成JSON。我正在使用GSON进行转换,但它给出了如下错误 java.lang.IllegalArgumentException:类oracle.jdbc.driver.Accessor声明多个名为statement的JSON字段 我正在传递这个名为results的对象,它是使用myBatis获得的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
[{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);