2016-05-30 2 views
0

私はバックエンドアプリケーションを使用しており、Hibersap 1.2.0を使用してSAPロジックをサービスにマップしています。Hibersapは、目的のオブジェクトの代わりにArrayListからHashMapsを返す

のArrayList内の要素にアクセスするとき、私はここでは、問題を抱えているが、私のクラスである:

import org.hibersap.annotations.BapiStructure; 
import org.hibersap.annotations.Parameter; 
import org.hibersap.annotations.ParameterType; 
import org.hibersap.annotations.Table; 

import java.util.List; 

@BapiStructure 
public class RFC_BP_Export { 

    @Parameter("PARTNER") 
    private String partner; 

    @Parameter("NOMBREC") 
    private String nombreC; 

    @Parameter("DIRECCION") 
    private String direccion; 

    @Parameter("SMTP_ADDR") 
    private String smtpAddr; 

    @Parameter("TEL_NUMBER") 
    private String telNumber; 

    @Table 
    @Parameter(value = "PERSONA_CONTACTO", type = ParameterType.STRUCTURE) 
    private List<RFC_PERSONA_CONTACTO_Export> rfcPersonaContactoExportList; 

    ... Getter and Setters... 

    public void setRfcPersonaContactoExportList(List<RFC_PERSONA_CONTACTO_Export> rfcPersonaContactoExportList) { 
     this.rfcPersonaContactoExportList = rfcPersonaContactoExportList; 
    } 

    @Override 
    public String toString() { 
     return "RFC_BP_Export{" + 
       "partner='" + partner + '\'' + 
       ", nombreC='" + nombreC + '\'' + 
       ", direccion='" + direccion + '\'' + 
       ", smtpAddr='" + smtpAddr + '\'' + 
       ", telNumber='" + telNumber + '\'' + 
       ", rfcPersonaContactoExportList=" + rfcPersonaContactoExportList + 
       '}'; 
    } 
} 

リストrfcPersonaContactoExportListは、以下のクラスのArrayListのが含まれている必要があります

import org.hibersap.annotations.BapiStructure; 
import org.hibersap.annotations.Parameter; 

    @BapiStructure 
    public class RFC_PERSONA_CONTACTO_Export{ 

     @Parameter("PARTNER") 
     private String partner; 

     @Parameter("NOMBREC") 
     private String nombreC; 

     @Parameter("DIRECCION") 
     private String direccion; 

     @Parameter("SMTP_ADDR") 
     private String smtpAddr; 

     @Parameter("TEL_NUMBER") 
     private String telNumber; 

     @Parameter("XDFREL") 
     private String xdfRel; 


     ....Getters and Setters... 

     @Override 
     public String toString() { 
      return "RFC_PERSONA_CONTACTO_Export{" + 
        "partner='" + partner + '\'' + 
        ", nombreC='" + nombreC + '\'' + 
        ", direccion='" + direccion + '\'' + 
        ", smtpAddr='" + smtpAddr + '\'' + 
        ", telNumber='" + telNumber + '\'' + 
        ", xdfRel='" + xdfRel + '\'' + 
        '}'; 
     } 
    } 

しかし、 Listから要素を取得しようとすると、RFC_PERSONA_CONTACTO_Exportオブジェクトの代わりにHashMapオブジェクトが返されます。たとえば:

for(RFC_PERSONA_CONTACTO_Export contacto_export : bpExport.getRfcPersonaContactoExportList()){ 
    System.out.println("contacto " + bpExport); 
} 

は、HashMapのはRFC_PERSONA_CONTACTO_Exportに変換することができないと言う例外をスローします。

私のクラスに注釈がありませんか?なぜ私が望むオブジェクトにアクセスできないのですか?

答えて

0

は、私はこのコードを使用していた:

  Object contactoExportObj = bsExport.getRfcPersonaContactoExportList().get(i); 
      HashMap<String, String> contactoHashMap = null; 
      RFC_PERSONA_CONTACTO_Export rfcPersonaContact = new RFC_PERSONA_CONTACTO_Export(); 
      if(contactoExportObj instanceof HashMap){ 
       contactoHashMap = (HashMap<String, String>) contactoExportObj; 
       rfcPersonaContact.setPartner(contactoHashMap.get("PARTNER")); 
       rfcPersonaContact.setDireccion(contactoHashMap.get("DIRECCION")); 
       rfcPersonaContact.setNombreC(contactoHashMap.get("NOMBREC")); 
       rfcPersonaContact.setSmtpAddr(contactoHashMap.get("SMTP_ADDR")); 
       rfcPersonaContact.setTelNumber(contactoHashMap.get("TEL_NUMBER")); 
       rfcPersonaContact.setXdfRel(contactoHashMap.get("XDFREL")); 

       contactManager.syncContact(rfcPersonaContact); 
       accountContactManager.syncAccountContact(bsExport.getPartner(), rfcPersonaContact.getPartner(), isPrimary(rfcPersonaContact.getXdfRel())); 
      } 

あなたが見ることができるように、私はObjectインスタンスに、リスト内の要素を割り当て、その後、HashMap変数を作成し、時以来ですコンパイル時にcontactoExportObjをキャストするとエラーがスローされます。実行時にインスタンスを取得するためにifステートメントを使用して、目的のオブジェクトに情報を渡しました。

私はこれが理想的な解決策ではないことを知っています.Hibersapのgitは分岐解決策を持っていましたが、プロジェクト制約のために使用する依存関係は使用できません。

0

私は完全なマッピングがわかりませんが、エクスポートしたコード内にテーブルがあることを投稿したコードから推測します。 Hibersapは現在のバージョンではこれをサポートしていません。しかし、次のリリースに向けて準備中です。この問題を回避するには

+0

ええ、私は深い構造がサポートされていないことに気付きました。 –

関連する問題