From 0c01178d75e0060ce3a27b2d318f4c9991ac5ffc Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Thu, 23 Jun 2022 14:36:35 +0800 Subject: [PATCH] =?UTF-8?q?fix[orm]:=20=E4=BF=AE=E5=A4=8D=E4=BA=86map?= =?UTF-8?q?=E7=9A=84key=E7=B1=BB=E5=9E=8B=E6=A0=A1=E9=AA=8C=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=8Cmongodb=E7=9A=84key=E5=8F=AA=E8=83=BD?= =?UTF-8?q?=E4=B8=BAstring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orm/src/main/java/com/zfoo/orm/manager/OrmManager.java | 7 +++---- orm/src/test/java/com/zfoo/orm/accessor/MapTest.java | 5 +++++ orm/src/test/java/com/zfoo/orm/entity/bag/MapEntity.java | 9 +++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java index 949d8538..9528bd50 100644 --- a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java +++ b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java @@ -511,8 +511,8 @@ public class OrmManager implements IOrmManager { var keyType = types[0]; var valueType = types[1]; - if (!isBaseType((Class) keyType)) { - throw new RunException("ORM[class:{}]类型声明不正确,Map的key类型必须为基础类型,value必须是普通的pojo", clazz.getCanonicalName()); + if (!String.class.isAssignableFrom((Class) keyType)) { + throw new RunException("ORM[class:{}]类型声明不正确,Map的key类型必须为String类型", clazz.getCanonicalName()); } checkSubEntity(clazz, valueType); @@ -536,8 +536,7 @@ public class OrmManager implements IOrmManager { checkSubEntity(currentEntityClass, ((ParameterizedType) type).getActualTypeArguments()[0]); return; } else if (Map.class.equals(clazz)) { - // Map, List> - throw new RunException("ORM不支持Map类型"); + return; } } else if (type instanceof Class) { Class clazz = ((Class) type); diff --git a/orm/src/test/java/com/zfoo/orm/accessor/MapTest.java b/orm/src/test/java/com/zfoo/orm/accessor/MapTest.java index 29feff1b..19d61541 100644 --- a/orm/src/test/java/com/zfoo/orm/accessor/MapTest.java +++ b/orm/src/test/java/com/zfoo/orm/accessor/MapTest.java @@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.HashMap; +import java.util.Map; @Ignore public class MapTest { @@ -55,6 +56,10 @@ public class MapTest { bagMap.put("bag2", bagItem2); bagMap.put("bag3", bagItem3); + var map = new HashMap>(); + map.put("a", Map.of("b", "b")); + entity.setBaseMap(map); + OrmContext.getAccessor().insert(entity); var myEntity = OrmContext.getAccessor().load(1, MapEntity.class); 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 44db31fc..c08f4fe2 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 @@ -29,6 +29,8 @@ public class MapEntity implements IEntity { private Map bagMap = new HashMap<>(); + private Map> baseMap = new HashMap<>(); + @Override public Long id() { return id; @@ -50,6 +52,13 @@ public class MapEntity implements IEntity { this.bagMap = bagMap; } + public Map> getBaseMap() { + return baseMap; + } + + public void setBaseMap(Map> baseMap) { + this.baseMap = baseMap; + } @Override public boolean equals(Object o) {