我在myBatis的mapper文件中遇到NoSuchMethodException myclass <init>()

时间:2015-12-29 07:31:16

标签: sql xml mybatis

我正在尝试将myBatis数据库结构嵌入到现有项目中。我已经将它作为一个例子实现了。当我尝试在我的项目中使用相同的方法时,我得到了这个NoSuchMethodException。 (顺便说一句,这个SQL查询工作,我已经在数据库上尝试了相同的值)  我的班级文件

    public class Cashflow {
        public long id;
        public LocalDate finalMaturityDate;
        public int branchCode;
        public int currencyCode;
        public long rateProfileCodeId;

        public Cashflow(long id, LocalDate finalMaturityDate) {
            this.id = id;
            this.finalMaturityDate = finalMaturityDate;
        }

        public Cashflow(long id, int branchCode, int currencyCode, long rateProfileCodeId){
            this.id = id;
            this.branchCode = branchCode;
            this.currencyCode = currencyCode;
            this.rateProfileCodeId = rateProfileCodeId;
            this.finalMaturityDate = LocalDate.parse("2012-05-12");
        }

        public void setRateProfileCodeId(long rateProfileCodeId) {
            this.rateProfileCodeId = rateProfileCodeId;
        }
    }

    My mapper file:
        <resultMap type="Cashflow" id="CashflowResult">
            <result property="id" column="NAK_ID" />
            <result property="branchCode" column="NAK_GIR_SUBE_KODU" />
            <result property="currencyCode" column="NAK_DOVIZ_KODU" />
            <result property="rateProfileCodeId" column="NAK_OPK_ID" />
        </resultMap>

        <select id="retrieveCashflowMyBatis" parameterType="long" resultMap="CashflowResult" >
            SELECT
            NAK_ID,
            NAK_DOVIZ_KODU,
            NAK_OPK_ID,
            NAK_URN_ID,
            NAK_GIRIS_TIP,
            NAK_AKIS_TUTAR,
            NAK_GIR_SUBE_KODU,
            NAK_REFERANS_NO,
            NAK_GECERLILIK_TARIH,
            NAK_DURUM_KODU,
            NAK_DETAY_GUNCELLEME,
            MUI_MUSTERI_NO,
            NAH_ODEME_BAS_TARIH,
            NAH_ORTALAMA_VADE_TARIH,
            NAH_ORTALAMA_VADE,
            NAH_HESAPLAMA_TARIH,
            NAH_DURASYON,
            NAH_IRR,
            NAH_FAIZ_HESAP_TIPI,
            NAH_DURASYON_BAZ_TARIH,
            NAH_KALAN_ORTALAMA_VADE,
            NAH_FAIZ_TIPI,
            OPK_LIBOR_BASAMAK_SAYISI,
            OPK_ORAN_GUN_KODU,
            OPK_GERI_ODEME_VALOR
            FROM SCNAU.NAU_NAKIT_AKIS
            LEFT OUTER JOIN
            SCNAU.NAU_NAKIT_AKIS_HESAP
            ON NAK_ID = 35
            AND NAH_NAK_ID = NAK_ID,
            SCNAU.NAU_MUSTERI_ILISKI,
            SCNAU.NAU_ORAN_PROFIL_KOD
            WHERE NAK_ID = 35
            AND MUI_NAK_REFERANS_NO = NAK_REFERANS_NO
            AND MUI_DURUM_KODU = '1'
            AND NAK_OPK_ID = OPK_ID
            WITH UR
        </select>

My interface class for method:
public interface DatabaseService {

    public Cashflow retrieveCashflowMyBatis(long cashflowId);
}

1 个答案:

答案 0 :(得分:2)

您的resultMap正在尝试调用默认构造函数Cashflow()(因为您没有告诉它做其他事情),这是不存在的。要么添加一个......

 public Cashflow() {}

...或将正确的构造函数参数放入resultMap:

<resultMap type="Cashflow" id="CashflowResult">
      <constructor>
        <idArg column="NAK_ID" javaType="int"/>
        <arg column=".." javaType=/>
        <!-- do for all constructor arguments branchCode, currencyCode, rateProfileCodeId -->
      </constructor>
... result tags as needed
</resultMap>