我正在使用一个后端应用程序,它使用Hibersap 1.2.0将SAP逻辑Map到我们的服务中。
我在访问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中获取一个元素时,它返回一个HashMap对象,而不是RFC_PERSONA_CONTACTO_Export对象。举例来说:
for(RFC_PERSONA_CONTACTO_Export contacto_export : bpExport.getRfcPersonaContactoExportList()){
System.out.println("contacto " + bpExport);
}
型
抛出一个异常,表明HashMap无法转换为RFC_PERSONA_CONTACTO_Export。
我的类中是否缺少注解?为什么我不能访问我想要的对象?
3条答案
按热度按时间kt06eoxx1#
我不知道完整的Map,但我猜从你张贴的代码,你有一个表内的一个出口参数。Hibersap当前版本不支持此功能。但是,我们正在努力使其成为下一个版本。
falq053o2#
为了解决这个问题,我必须使用以下代码:
字符串
正如你所看到的,我将列表中的元素赋值给一个
Object
示例,然后创建一个HashMap
变量,由于在编译时强制转换contactoExportObj会抛出错误,我使用了一个if语句在运行时检查我得到的示例,然后我继续将信息传递给我想要的对象。我知道这不是一个理想的解决方案,Hibersap的git有一个分支解决方案,但由于项目限制,我们无法使用它使用的依赖项。
r7s23pms3#
如果你想实现一种特定的转换方式(比如我需要HashMap to List Converter),你可以实现你自己的,然后像这样使用它:
字符串
转换器编码
型