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 249aaf25..09b5347d 100644 --- a/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java +++ b/orm/src/main/java/com/zfoo/orm/manager/OrmManager.java @@ -512,7 +512,7 @@ public class OrmManager implements IOrmManager { var valueType = types[1]; if (!String.class.isAssignableFrom((Class) keyType)) { - throw new RunException("ORM中Map的key必须是String类型"); + throw new RunException("ORM[class:{}]类型声明不正确,Map的key类型必须为String类型", clazz.getCanonicalName()); } checkSubEntity(clazz, valueType); 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) {