From bd4a7d99d51b56ce4590a7d08f9f4c38b5a99430 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 17 Apr 2023 21:44:35 +0200 Subject: [PATCH] IDEMPIERE-5675 MTable.getPO cache for model factory wrongly removing from cache when PO is not found --- .../src/org/compiere/model/MTable.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MTable.java b/org.adempiere.base/src/org/compiere/model/MTable.java index 4b2862421c..87089c7610 100644 --- a/org.adempiere.base/src/org/compiere/model/MTable.java +++ b/org.adempiere.base/src/org/compiere/model/MTable.java @@ -576,8 +576,7 @@ public PO getPO (int Record_ID, String trxName) { if (po.get_ID() != Record_ID && Record_ID > 0) po = null; - else - return po; + return po; } } s_modelFactoryCache.remove(tableName); @@ -596,21 +595,19 @@ public PO getPO (int Record_ID, String trxName) { if (po.get_ID() != Record_ID && Record_ID > 0) po = null; - else - { - s_modelFactoryCache.put(tableName, factory); - break; - } + s_modelFactoryCache.put(tableName, factory); + break; } } } } - if (po == null) + if (po == null && s_modelFactoryCache.get(tableName) == null) { po = new GenericPO(tableName, getCtx(), Record_ID, trxName); if (po.get_ID() != Record_ID && Record_ID > 0) po = null; + // TODO: how to add GenericPO to the s_modelFactoryCache ?? } return po;