Я пытаюсь выполнить итерацию по списку записей sdid в java. В отчетах sdid установлена запись до 8 записей с тем же sdid, но необходимо проверить столбец состояния каждого sdid, чтобы узнать, есть ли его PEND_ADD
, PEND_DEL
AND ACTIVE
.Добавить boolean в java-код для проверки состояния состояния таблицы
Итак, для первого условия: если статус PEND_ADD
или PEND_DEL
. Затем удалите записи.
Если статус ACTIVE
, то удалите записи.
Если статус ACTIVE
, PEND_ADD
и/или PEND_DEL
, а затем удалить PEND_ADD
и/или PEND_DEL
и держать ACTIVE
private void disconnectClassOfService(List<Integer> sdidList) throws Exception {
if (sdidList == null || sdidList.isEmpty()){
return;
}
logger.info("Start deleting sdid : " + sdidList);
for (Integer sdid : sdidList) {
List<CosPolicy2Interface> cosPolicy2InterfaceBySdid = getCosPolicy2InterfaceDAO().getCosPolicy2InterfaceBySdid(sdid);
if (cosPolicy2InterfaceBySdid != null && !cosPolicy2InterfaceBySdid.isEmpty()){
for (CosPolicy2Interface cosPolicySdid: cosPolicy2InterfaceBySdid){
if (cosPolicySdid.getStatus().equals("PEND_ADD")){
getPersistMgr().delete(cosPolicySdid);
}
if (cosPolicySdid.getStatus().equals("PEND_DEL")){
getPersistMgr().delete(cosPolicySdid);
}
if (cosPolicySdid.getStatus().equals("ACTIVE")){
getPersistMgr().delete(cosPolicySdid);
}
}
}
мой зимуют запрос
protected static final String queryBySdid = " SELECT * "
+ " FROM cos_policy2interface "
+ " WHERE connection_type = 'SDID' AND connection_id = ?";
@Override
public List<CosPolicy2Interface> getCosPolicy2InterfaceBySdid(
long sdid) throws Exception {
EntityManager em = getEntityManager();
CosPolicy2Interface CosPolicy2Interface = null;
Query query = em.createNativeQuery(queryBySdid, CosPolicy2Interface.class);
query.setParameter(1, sdid);
@SuppressWarnings("unchecked")
List<CosPolicy2Interface> cosPolicy2InterfaceList = query.getResultList();
return cosPolicy2InterfaceList;
}
пример таблицы:
CosPolicy2Interface_id,connection_type, connection_id, status
29, 'SDID', 13538806, ACTIVE
30, 'SDID', 13538806, PEND_DEL
31, 'SDID', 13538806, ACTIVE
32, 'SDID', 13538806, PEND_ADD
33, 'SDID', 13538806, PEND_ADD
34, 'SDID', 13538806, ACTIVE
My logic will erased all of it since it will iterate one record at a time. Could I use a boolean? some thing like this how can I implemented.
1) Pen Add -> dont care delete (But set PendingFlag to true)
2)Pend Del --> dont care delete (Set Pending Flag to true)
3) Active --> Store them in a list to check later
Come out of the for-loop and check if pendingFlag is false and activeCosList is not empty --> delete them
Это запутанно, в вашем методе 'disconnectClassOfService' вы пытаетесь удалить каждую запись и в последнем случае, если вы проверяете, совпадает ли статус записи со всем статусом, когда запись может иметь только один статус. – Bunti
Да, ваше право, оно никогда не ударит по этому состоянию. Неправильно мне нужно только сохранить 'ACTIVE' .so в этом примере запись' 29', '31',' 34' для connection_id '13538806' thats my sdid. Я хочу сохранить. и удалите «PEND_ADD» и «PEND_DEL». – Gio
Итак, почему вы удаляете объект с статусом 'ACTIVE' в' disconnectClassOfService', если вы не хотите удалять эту запись? – Bunti