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

I encounter NoSuchMethodException myclass<init>() in mapper file for myBatis

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

    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);
}

您的 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>