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) {