From a3b1f881a03f541c78e194adffe92614477e03d4 Mon Sep 17 00:00:00 2001 From: jianan <1072772483@qq.com> Date: Thu, 23 Jun 2022 14:54:04 +0800 Subject: [PATCH] =?UTF-8?q?perf[module]:=20orm=E7=9A=84map=E7=9A=84key?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E6=98=AFString=EF=BC=8Cvalue=E6=B2=A1?= =?UTF-8?q?=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/zfoo/orm/manager/OrmManager.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 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..249aaf25 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中Map的key必须是String类型"); } checkSubEntity(clazz, valueType); @@ -537,7 +537,14 @@ public class OrmManager implements IOrmManager { return; } else if (Map.class.equals(clazz)) { // Map, List> - throw new RunException("ORM不支持Map类型"); + var types = ((ParameterizedType) type).getActualTypeArguments(); + var keyType = types[0]; + var valueType = types[1]; + if (!String.class.isAssignableFrom((Class) keyType)) { + throw new RunException("ORM中Map的key必须是String类型"); + } + checkSubEntity(currentEntityClass, valueType); + return; } } else if (type instanceof Class) { Class clazz = ((Class) type);