2015-12-29 30 views
0

我想將myBatis數據庫結構嵌入到我現有的項目中。作爲一個例子,我已經實現了它。當我嘗試在我的項目中使用相同的方法時,我得到這個NoSuchMethodException。 (順便說一下,這個SQL查詢的工作,我已經嘗試過與同值的數據庫) 我的類文件我遇到NoSuchMethodException myclass <init>()myBatis的映射器文件

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

回答

2

你的結果映射試圖調用默認的構造函數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>