diff --git a/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java b/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java index afe785ca..96e5c68d 100644 --- a/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java +++ b/orm/src/main/java/com/zfoo/orm/model/cache/EntityCaches.java @@ -144,7 +144,7 @@ public class EntityCaches, E extends IEntity> impl } if (currentPnode.getThreadId() != Thread.currentThread().getId()) { - logger.error("[{}]被多线程访问了,先后2次访问线程ID分别是[{}] [{}]", entity.getClass().getSimpleName(), + logger.error("[{} id:{}]被多线程访问了,先后2次访问线程id分别是[{}][{}]", entity.getClass().getSimpleName(), entity.id(), currentPnode.getThreadId(), Thread.currentThread().getId()); } diff --git a/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java b/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java index 10db4057..0a0c19fe 100644 --- a/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java +++ b/orm/src/main/java/com/zfoo/orm/model/entity/IEntity.java @@ -13,6 +13,7 @@ package com.zfoo.orm.model.entity; +import com.zfoo.orm.OrmContext; import com.zfoo.protocol.util.StringUtils; /** @@ -53,7 +54,7 @@ public interface IEntity> { * * @return EntityCaches中取出的值在数据库中是否存在 */ - default boolean checkNull() { + default boolean empty() { PK idValue = id(); if (idValue == null) { return true; @@ -65,4 +66,39 @@ public interface IEntity> { return StringUtils.isEmpty((CharSequence) idValue); } } + + /** + * 插入数据库时使用 + */ + default void insert() { + OrmContext.getAccessor().insert(this); + invalidate(); + } + + /** + * 从数据库删除时使用 + */ + default void delete() { + OrmContext.getAccessor().delete(this); + invalidate(); + } + + /** + * 保存到数据库时使用 + */ + default void save() { + OrmContext.getOrmManager().getEntityCaches(this.getClass()).update(queryEntity()); + } + + private void invalidate() { + OrmContext.getOrmManager().getEntityCaches(this.getClass()).invalidate(queryId()); + } + + private E queryEntity() { + return (E) this; + } + + private PK queryId() { + return (PK) id(); + } }