Java 如何在ibatis的insert查询中传递字符串数组?

Java 如何在ibatis的insert查询中传递字符串数组?,java,postgresql,ibatis,Java,Postgresql,Ibatis,如何在ibatis中传递insert查询语句中的字符串数组。在将字符串数组作为参数传递时,它给了我ibatis的这个异常- Can't infer the SQL type to use for an instance of [Ljava.lang.String;. Use setObject() with an explicit Types value to specify the type to use. 如何解决这个错误 我的方法是— public void insertCampaign

如何在ibatis中传递insert查询语句中的字符串数组。在将字符串数组作为参数传递时,它给了我ibatis的这个异常-

Can't infer the SQL type to use for an instance of [Ljava.lang.String;. Use setObject() with an explicit Types value to specify the type to use.
如何解决这个错误

我的方法是—

public void insertCampaignData(String campaignData, ObjectMapper jsonObjMapper) {
    Campaign campaign = null;
    SqlSession session = null;
    IfrmCreateCampaign createCampaign = null;
    try {
        campaign = jsonObjMapper.readValue(campaignData,Campaign.class);
        session = DBConnectionFactory.getNewSession();
        createCampaign = session.getMapper(IfrmCreateCampaign.class);
        createCampaign.insertCampaignData(campaign);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        session.close();
    }
}
我的实体类是-

import java.io.File;
import java.util.Date;

public class Campaign {

    private long campaignId;
    private String campaignName;
    private long keywordId;
    private String brandName;
    private String clientName;
    private String mobileNum;
    private Date startTime;
    private Date endTime;
    private double campaignBudget;
    private double allocatedFund;
    private double campaignRate;
    private boolean basicTgt;
    private boolean customTgt;
    private boolean advTgt;
    private boolean chechme;
    private boolean couponSend;
    private String couponFrom;
    private String couponTo;
    private String couponFilePath;
    private File[] couponFile;
    private String[] couponFileFileName;
    private String[] couponFileContent;
    private String callbackUrl;
    private String status;
    private int campaignTypeId;
    private long roAmount;
    // edit
    private int roType;

    public int getRoType() {
        return roType;
    }

    public void setRoType(int roType) {
        this.roType = roType;
    }
    // edit

    private String strStartTime;
    private String strEndTime;
    private String keyword;
    private String keywordNum;
    private int goal;
    private double spentAmount;
    private int goalAchievePercent;
    private int dial;
    private int uniqueDial;
    private long userId;
    private double campaignTotalAmount;
    private double operatorShare;
    private long responseCount;

    private String strRoPdfFileName;
    private File[] roPdf;
    private String[] roPdfFileName;
    private String[] roPdfContent;


    public long getCampaignId() {
        return campaignId;
    }

    public void setCampaignId(long campaignId) {
        this.campaignId = campaignId;
    }

    public String getCampaignName() {
        return campaignName;
    }

    public void setCampaignName(String campaignName) {
        this.campaignName = campaignName;
    }

    public long getKeywordId() {
        return keywordId;
    }

    public void setKeywordId(long keywordId) {
        this.keywordId = keywordId;
    }

    public String getKeywordNum() {
        return keywordNum;
    }

    public void setKeywordNum(String keywordNum) {
        this.keywordNum = keywordNum;
    }

    public String getBrandName() {
        return brandName;
    }

    public void setBrandName(String brandName) {
        this.brandName = brandName;
    }

    public String getClientName() {
        return clientName;
    }

    public void setClientName(String clientName) {
        this.clientName = clientName;
    }

    public String getMobileNum() {
        return mobileNum;
    }

    public void setMobileNum(String mobileNum) {
        this.mobileNum = mobileNum;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public double getCampaignBudget() {
        return campaignBudget;
    }

    public void setCampaignBudget(double campaignBudget) {
        this.campaignBudget = campaignBudget;
    }

    public double getAllocatedFund() {
        return allocatedFund;
    }

    public void setAllocatedFund(double allocatedFund) {
        this.allocatedFund = allocatedFund;
    }

    public double getCampaignRate() {
        return campaignRate;
    }

    public void setCampaignRate(double campaignRate) {
        this.campaignRate = campaignRate;
    }



    public boolean isBasicTgt() {
        return basicTgt;
    }

    public void setBasicTgt(boolean basicTgt) {
        this.basicTgt = basicTgt;
    }

    public boolean isCustomTgt() {
        return customTgt;
    }

    public void setCustomTgt(boolean customTgt) {
        this.customTgt = customTgt;
    }

    public boolean isAdvTgt() {
        return advTgt;
    }

    public void setAdvTgt(boolean advTgt) {
        this.advTgt = advTgt;
    }

    public boolean isChechme() {
        return chechme;
    }

    public void setChechme(boolean chechme) {
        this.chechme = chechme;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStrStartTime() {
        return strStartTime;
    }

    public void setStrStartTime(String strStartTime) {
        this.strStartTime = strStartTime;
    }

    public String getStrEndTime() {
        return strEndTime;
    }

    public void setStrEndTime(String strEndTime) {
        this.strEndTime = strEndTime;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public int getGoal() {
        return goal;
    }

    public void setGoal(int goal) {
        this.goal = goal;
    }

    public double getSpentAmount() {
        return spentAmount;
    }

    public void setSpentAmount(double spentAmount) {
        this.spentAmount = spentAmount;
    }

    public int getGoalAchievePercent() {
        return goalAchievePercent;
    }

    public void setGoalAchievePercent(int goalAchievePercent) {
        this.goalAchievePercent = goalAchievePercent;
    }

    public int getDial() {
        return dial;
    }

    public void setDial(int dial) {
        this.dial = dial;
    }

    public int getUniqueDial() {
        return uniqueDial;
    }

    public void setUniqueDial(int uniqueDial) {
        this.uniqueDial = uniqueDial;
    }

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public boolean isCouponSend() {
        return couponSend;
    }

    public void setCouponSend(boolean couponSend) {
        this.couponSend = couponSend;
    }

    public String getCouponFrom() {
        return couponFrom;
    }

    public void setCouponFrom(String couponFrom) {
        this.couponFrom = couponFrom;
    }

    public String getCouponTo() {
        return couponTo;
    }

    public void setCouponTo(String couponTo) {
        this.couponTo = couponTo;
    }

    public String getCouponFilePath() {
        return couponFilePath;
    }

    public void setCouponFilePath(String couponFilePath) {
        this.couponFilePath = couponFilePath;
    }

    public File[] getCouponFile() {
        return couponFile;
    }

    public void setCouponFile(File[] couponFile) {
        this.couponFile = couponFile;
    }

    public String[] getCouponFileFileName() {
        return couponFileFileName;
    }

    public void setCouponFileFileName(String[] couponFileFileName) {
        this.couponFileFileName = couponFileFileName;
    }

    public String[] getCouponFileContent() {
        return couponFileContent;
    }

    public void setCouponFileContent(String[] couponFileContent) {
        this.couponFileContent = couponFileContent;
    }

    public String getCallbackUrl() {
        return callbackUrl;
    }

    public void setCallbackUrl(String callbackUrl) {
        this.callbackUrl = callbackUrl;
    }

    public int getCampaignTypeId() {
        return campaignTypeId;
    }

    public void setCampaignTypeId(int campaignTypeId) {
        this.campaignTypeId = campaignTypeId;
    }

    public long getRoAmount() {
        return roAmount;
    }

    public void setRoAmount(long roAmount) {
        this.roAmount = roAmount;
    }

    public double getOperatorShare() {
        return operatorShare;
    }

    public void setOperatorShare(double operatorShare) {
        this.operatorShare = operatorShare;
    }

    public long getResponseCount() {
        return responseCount;
    }

    public void setResponseCount(long responseCount) {
        this.responseCount = responseCount;
    }

    public double getCampaignTotalAmount() {
        return campaignTotalAmount;
    }

    public void setCampaignTotalAmount(double campaignTotalAmount) {
        this.campaignTotalAmount = campaignTotalAmount;
    }


    public String getStrRoPdfFileName() {
        return strRoPdfFileName;
    }

    public void setStrRoPdfFileName(String strRoPdfFileName) {
        this.strRoPdfFileName = strRoPdfFileName;
    }

    public File[] getRoPdf() {
        return roPdf;
    }

    public void setRoPdf(File[] roPdf) {
        this.roPdf = roPdf;
    }

    public String[] getRoPdfFileName() {
        return roPdfFileName;
    }

    public void setRoPdfFileName(String[] roPdfFileName) {
        this.roPdfFileName = roPdfFileName;
    }

    public String[] getRoPdfContent() {
        return roPdfContent;
    }

    public void setRoPdfContent(String[] roPdfContent) {
        this.roPdfContent = roPdfContent;
    }



}
我的xml映射文件是-

<?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="com.mogae.starStarWebServices.db.dao.IfrmCreateCampaign">

        <insert id="insertCampaignData" statementType="PREPARED" >
            insert into campaign(campaign_id,campaign_name,keyword_id,brand_name,client_name,mobile_num,start_time,end_time,campaign_type_id,ro_amount,ro_type,ro_pdf_file_name,campaign_budget,allocated_fund,campaign_rate,is_basic_tgt,is_custom_tgt,is_adv_tgt,is_checkme,is_coupon_send,coupon_from,coupon_to,coupon_file,callback_url,status) values (#{campaignId},#{campaignName},#{keywordId},#{brandName},#{clientName},#{mobileNum},#{startTime},#{endTime},#{campaignTypeId},#{roAmount},#{roType},
            #{strRoPdfFileName},#{campaignBudget},#{allocatedFund},#{campaignRate},#{basicTgt},#{customTgt},#{advTgt},#{chechme},#{couponSend},#{couponFrom},#{couponTo},#{couponFileFileName},#{callbackUrl},#{status});
        </insert>

        <insert id="insertKeywordData" statementType="PREPARED" >
            insert into keywords(keyword_id,keyword,keyword_num,booked_by,purchased_on,expires_on,status) values (#{keywordId},#{keyword},#{keywordNum},#{bookedBy},#{purchasedOn},#{expiresOn},#{status})
        </insert>


</mapper>

在活动中插入(活动id、活动名称、关键字id、品牌名称、客户名称、手机号码、开始时间、结束时间、活动类型id、活动金额、活动类型、活动pdf文件名、活动预算、分配资金、活动费率、是基本的、是自定义的、是高级的、是支票我、是优惠券发送、优惠券从、优惠券到、优惠券文件、回调url、状态)值({35ID}#{campaigname}、#{keywordId}、#{brandName}、#{clientName}、#{mobileNum}、#{startTime}、#{endTime}、#{campaignTypeId}、#roAmount}、#roType},
#{strRoPdfFileName}、{campaignBudget}、{allocatedFund}、{campaignRate}、{basicTgt}、{customTgt}、{advTgt}、{chechme}、{couponSend}、{couponFrom}、{couponFrom}、{couponfilename}、{couponfilename}、{callback url、{;
插入关键字(关键字id、关键字、关键字num、预订人、购买人、到期日、状态)值(#{keywordId}、#{keywordNum}、#{keywordNum}、#{bookedBy}、#{purchasedOn}、#{expiresOn}、#status})

这是iBatis异常还是PostgreSQL异常?如果您共享代码,这将有助于识别问题。@Viraj我已经添加了这一点,设置参数时是ibatis异常。您试图将字符串[]插入的数据库列类型是什么?这可能需要自定义映射器。