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 d33a93ad..92c26358 100644 --- a/orm/src/main/java/com/zfoo/orm/cache/EntityCache.java +++ b/orm/src/main/java/com/zfoo/orm/cache/EntityCache.java @@ -122,7 +122,7 @@ public class EntityCache, E extends IEntity> imple if (entity == null) { // 数据库无法加载缓存,返回默认值 logger.warn("[{}] can not load [pk:{}] and use default entity to replace it", entityDef.getClazz().getSimpleName(), pk); - entity = (E) entityDef.newEntity(pk); + entity = (E) entityDef.newEmptyEntity(); } pnode = new PNode<>(entity); cache.put(pk, pnode); @@ -130,7 +130,7 @@ public class EntityCache, E extends IEntity> imple } @Override - public E loadOrInit(PK pk) { + public E loadOrCreate(PK pk) { AssertionUtils.notNull(pk); var pnode = cache.get(pk); if (pnode != null) { @@ -142,9 +142,7 @@ public class EntityCache, E extends IEntity> imple // 如果数据库中不存在则给一个默认值 if (entity == null) { - // 数据库无法加载缓存,返回默认值 entity = (E) entityDef.newEntity(pk); - entity.setId(pk); OrmContext.getAccessor().insert(entity); } pnode = new PNode<>(entity); 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 4d75dc5d..d08ebe3e 100644 --- a/orm/src/main/java/com/zfoo/orm/cache/IEntityCache.java +++ b/orm/src/main/java/com/zfoo/orm/cache/IEntityCache.java @@ -35,7 +35,7 @@ public interface IEntityCache, E extends IEntity> *

* CN: 从数据库中加载数据到缓存,如果数据库不存在则返回一个id为传入值的默认示例。并且入库。(设置了索引唯一的无法使用该方法) */ - E loadOrInit(PK pk); + E loadOrCreate(PK pk); /** * 更新缓存中的数据,只更新缓存的时间戳,并通过一定策略写入到数据库 diff --git a/orm/src/main/java/com/zfoo/orm/model/EntityDef.java b/orm/src/main/java/com/zfoo/orm/model/EntityDef.java index 156335a0..ec646418 100644 --- a/orm/src/main/java/com/zfoo/orm/model/EntityDef.java +++ b/orm/src/main/java/com/zfoo/orm/model/EntityDef.java @@ -12,6 +12,7 @@ package com.zfoo.orm.model; +import com.zfoo.orm.anno.Id; import com.zfoo.orm.config.PersisterStrategy; import com.zfoo.protocol.util.ReflectionUtils; @@ -54,8 +55,15 @@ public class EntityDef { return clazz; } + public IEntity newEmptyEntity() { + var entity = ReflectionUtils.newInstance(clazz); + return entity; + } + public IEntity newEntity(Object id) { var entity = ReflectionUtils.newInstance(clazz); + var idFields = ReflectionUtils.getFieldsByAnnoInPOJOClass(clazz, Id.class); + ReflectionUtils.setField(idFields[0], entity, id); return entity; } diff --git a/orm/src/main/java/com/zfoo/orm/model/IEntity.java b/orm/src/main/java/com/zfoo/orm/model/IEntity.java index 7b4bf5c7..1a7c6a20 100644 --- a/orm/src/main/java/com/zfoo/orm/model/IEntity.java +++ b/orm/src/main/java/com/zfoo/orm/model/IEntity.java @@ -24,10 +24,6 @@ public interface IEntity> { */ PK id(); - /** - * 设置主键 - */ - void setId(PK pk); /** * 一个文档的写入到数据库的version版本,version的get和set方法 *

diff --git a/orm/src/test/java/com/zfoo/orm/cache/EntityCachesTest.java b/orm/src/test/java/com/zfoo/orm/cache/EntityCachesTest.java index f1f3b8f9..e74a0ad5 100644 --- a/orm/src/test/java/com/zfoo/orm/cache/EntityCachesTest.java +++ b/orm/src/test/java/com/zfoo/orm/cache/EntityCachesTest.java @@ -70,7 +70,7 @@ public class EntityCachesTest { var mailEntityCaches = (IEntityCache) OrmContext.getOrmManager().getEntityCaches(MailEntity.class); for (var i = 1; i <= 10; i++) { - var entity = mailEntityCaches.loadOrInit(String.valueOf(i)); + var entity = mailEntityCaches.loadOrCreate(String.valueOf(i)); entity.setContent("msg:" + i); mailEntityCaches.update(entity); } diff --git a/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java b/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java index 907bebd4..f0290a0b 100644 --- a/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java +++ b/orm/src/test/java/com/zfoo/orm/entity/UserEntity.java @@ -68,11 +68,6 @@ public class UserEntity implements IEntity { return id; } - @Override - public void setId(Long id) { - this.id=id; - } - public long getId() { return id; } diff --git a/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java b/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java index 76d60a57..22ec12bd 100644 --- a/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java +++ b/orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java @@ -36,11 +36,6 @@ public class MapEntity implements IEntity { return id; } - @Override - public void setId(Long id) { - this.id=id; - } - public long getId() { return id; }