我有一个模型类消息
public class LetterMessage implements Serializable{
private static final long serialVersionUID = 1L;
private String variableName;
private short variableId;
private Integer dataType;
private Integer isRequired;
private String value;
public LetterMessage() {
super();
}
public LetterMessage(String variableName,String value) {
super();
this.variableName = variableName;
this.value = value;
}
public LetterMessage(String variableName, short variableId,
Integer dataType, Integer isRequired, String value) {
super();
this.variableName = variableName;
this.variableId = variableId;
this.dataType = dataType;
this.isRequired = isRequired;
this.value = value;
}
}
对于给定的消息,可以有多个变量名称,如: 对于消息= 101
VariableName: Address, AccountID, UniqueIdentifier.
VariableID: 001, 002, 003.
DatatypeID: 2, 1, 3.
isRequired: 1, 0, 1.
Value: ?, ?, ?.
我从另一个类的数据库中获取VariableName,DataType。
这个for循环获取消息ID的变量,并将所有内容插入到LetterMessage列表对象中。
@Service
public class LetterRecoveryValidator {
List<CorrespondenceLetterVariableLog> letterDataHooks = correspondenceLetterVariableLogDao.findByLetterTypeId(letterTypeId);
List<LetterMessage> allDataHooks = new ArrayList<>();
for(CorrespondenceLetterVariableLog letterDataHook: letterDataHooks) {
LetterMessage datahook = new LetterMessage();
datahook.setVariableId(letterDataHook.getCorrespondenceVariableLookup().getVariableId());
datahook.setVariableName(letterDataHook.getCorrespondenceVariableLookup().getVariableName());
datahook.setDataType(letterDataHook.getCorrespondenceVariableLookup().getCorrespondenceVariableDataTypeLookup().getLetterDataTypeId());
datahook.setIsRequired(letterDataHook.getCorrespondenceVariableLookup().getVariableRequiredIndicator());
allDataHooks.add(datahook);
}
return allDataHooks;
}
这个LetterRecoveryValidator是一个独立的类。我不应该对它进行任何更新来增加价值。
我必须使用输出并在我身边添加值。
我在我的主要课程中调用它,如下面的
List<LetterMessage> letterToBeSent = new ArrayList<>();
letterToBeSent=(letterRecoveryValidator.getLetterDataHooks(fulfillmentOption.getTemplateId()));
上述步骤不会在Value属性中包含任何数据 它看起来如下所示。
[LetterMessage [variableName=Address, variableId=001, dataType=2, isRequired=1, value=null],
LetterMessage [variableName=RTLtr_CustomerAddress2, variableId=29, dataType=2, isRequired=1, value=null],
LetterMessage [variableName=RTLtr_CustomerCity, variableId=30, dataType=2, isRequired=1, value=null],
LetterMessage [variableName=RTLtr_CustomerState, variableId=33, dataType=2, isRequired=1, value=null],
LetterMessage [variableName=RTLtr_CustomerZip, variableId=34, dataType=7, isRequired=1, value=null],
LetterMessage [variableName=RTLtr_CoBorrowerName, variableId=78, dataType=2, isRequired=0, value=null]]
我需要将数据添加到Value属性。
我试过
letterToBeSent.add(new LetterMessage(MessageConstant.Address,"1243 WindHeaven Pkwy"));
这里是我从数据库中检索的GetAccountID()
letterToBeSent.add(new LetterMessage(MessageConstant.AccountID,GetAcctID()));
letterToBeSent.add(new LetterMessage(MessageConstant.UniqueIdentifier,UUID.randomUUID().toString()));
因为我是,使用&#34;新的LetterMessage&#34;每次我添加值时,它都会添加包含所有属性的新记录。
但是我希望它在Value属性中插入值而不是创建新实例。
答案 0 :(得分:0)
将所有字段设置为实体时,您缺少“value”属性。试试这个:
for(CorrespondenceLetterVariableLog letterDataHook: letterDataHooks) {
LetterMessage datahook = new LetterMessage();
datahook.setVariableId(letterDataHook.getCorrespondenceVariableLookup().getVariableId());
datahook.setVariableName(letterDataHook.getCorrespondenceVariableLookup().getVariableName());
datahook.setDataType(letterDataHook.getCorrespondenceVariableLookup().getCorrespondenceVariableDataTypeLookup().getLetterDataTypeId());
datahook.setIsRequired(letterDataHook.getCorrespondenceVariableLookup().getVariableRequiredIndicator());
// Here is the fix:
datahook.setValue(letterDataHook.getCorrespondenceVariableDataTypeLookup().getValue());
allDataHooks.add(datahook);
return allDataHooks;
}