我在分叉 Adempiere 项目后工作,当我使用 list() 方法从表创建列表时处理补丁,而不是特定的类列表,我得到的是通用 PO 列表。在补丁上工作可能是此错误的痛点。
这是代码
@Override
protected String doIt() throws Exception {
int orgId = Env.getAD_Org_ID(getCtx());
int clientID=Env.getAD_Client_ID(getCtx());
List<MEmployee> EmployeeList = new ArrayList<MEmployee>();
EmployeeList = getEmployeeList(p_MemberGroupId,orgId);
String msg = "";
for ( MEmployee employee : EmployeeList ) {
}
return null;
}
private List<MEmployee> getEmployeeList(int EmployeeGroupID, int orgId) {
List<MEmployee> employeeList = new ArrayList<MEmployee>();
StringBuffer employeeWhereClause = new StringBuffer();
employeeWhereClause.append( MEmployeeGroup.COLUMNNAME_E2_HR_PAGRP_ID )
.append( " = " ).append( EmployeeGroupID )
.append(" and ")
.append( MEmployee.COLUMNNAME_AD_Org_ID)
.append( " = " )
.append(orgId)
.append( " and " )
.append( X_E2_HR_PAEM0.COLUMNNAME_Status )
.append( " not in " )
.append(" ('"+MEmployee.EMPSTATUS_OnHold+"','"+MEmployee.EMPSTATUS_Left+"') ");
employeeList = new Query(getCtx(), MEmployee.Table_Name, employeeWhereClause.toString(), get_TrxName())
.setClient_ID()
.setOnlyActiveRecords(Boolean.TRUE)
.list();
return employeeList;
}
在这里,我得到的是通用 PO 列表,而不是 MEmployee 类型列表。
我找到了这个问题的答案,基本上员工表可以说ABC_Emp并且生成了我用于此ABC_Emp的模型类,并且MEmployee扩展了此X_ABC_Emp并实现了DocAction类,因此它不会生成列表。
我所做的是,我没有使用MEmployee,而是使用了模型类。 相反,X_ABC_Emp并尝试生成列表,它奏效了。我没有 确切地知道为什么MEmployee扩展X_ABC_Emp没有的原因 工作,但这几乎解决了我的问题。