diff --git a/orm/src/main/java/com/zfoo/orm/cache/EntityCache.java b/orm/src/main/java/com/zfoo/orm/cache/EntityCache.java index 92c26358..60a938cc 100644 --- a/orm/src/main/java/com/zfoo/orm/cache/EntityCache.java +++ b/orm/src/main/java/com/zfoo/orm/cache/EntityCache.java @@ -240,12 +240,34 @@ public class EntityCache, E extends IEntity> imple } } }); + persistList(updateList, entityClass); + } + @Override + public void persist(PK pk) { + var pnode = cache.get(pk); + if (pnode == null) { + return; + } + @SuppressWarnings("unchecked") + var entityClass = (Class) entityDef.getClazz(); + var updateList = new ArrayList(); + var currentTime = TimeUtils.currentTimeMillis(); + if (pnode.getModifiedTime() == pnode.getWriteToDbTime()) { + return; + } + var entity = pnode.getEntity(); + pnode.setWriteToDbTime(currentTime); + pnode.setModifiedTime(currentTime); + updateList.add(entity); + persistList(updateList, entityClass); + } + + private void persistList(ArrayList updateList, Class entityClass) { // 执行更新 if (updateList.isEmpty()) { return; } - var page = Page.valueOf(1, BATCH_SIZE, updateList.size()); var maxPageSize = page.totalPage(); diff --git a/orm/src/main/java/com/zfoo/orm/cache/IEntityCache.java b/orm/src/main/java/com/zfoo/orm/cache/IEntityCache.java index d08ebe3e..b270898c 100644 --- a/orm/src/main/java/com/zfoo/orm/cache/IEntityCache.java +++ b/orm/src/main/java/com/zfoo/orm/cache/IEntityCache.java @@ -66,6 +66,13 @@ public interface IEntityCache, E extends IEntity> */ void invalidate(PK pk); + /** + * 持久化缓存数据 + * + * @param pk 主键 + */ + void persist(PK pk); + /** * 持久化所有缓存数据 */