zhouhao пре 6 година
родитељ
комит
0d5167c7b4

+ 7 - 7
hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/strategy/CachedDataSourceSwitchStrategyMatcher.java

@@ -44,19 +44,19 @@ public abstract class CachedDataSourceSwitchStrategyMatcher implements DataSourc
     @AllArgsConstructor
     public static class CacheKey {
 
-        private Class target;
+        private Class<?> target;
 
         private Method method;
 
         @Override
-        public boolean equals(Object obj) {
-            if (!(obj instanceof CacheKey)) {
+        public boolean equals(Object targetObject) {
+            if (!(targetObject instanceof CacheKey)) {
                 return false;
             }
-            CacheKey target = ((CacheKey) obj);
-            return target.target.getName().equals(this.target.getName())
-                    && target.method.getName().equals(method.getName())
-                    && target.method.getParameterCount() == method.getParameterCount();
+            CacheKey targetCacheKey = ((CacheKey) targetObject);
+            return targetCacheKey.target.isAssignableFrom(this.target)
+                    && targetCacheKey.method.getName().equals(method.getName())
+                    && targetCacheKey.method.getParameterCount() == method.getParameterCount();
         }
 
         public int hashCode() {

+ 0 - 8
hsweb-datasource/hsweb-datasource-api/src/test/java/org/hswebframework/web/datasource/switcher/DefaultDataSourceSwitcherTest.java

@@ -59,14 +59,6 @@ public class DefaultDataSourceSwitcherTest {
         assertEquals(switcher.currentDataSourceId(), "test");
     }
 
-    @SneakyThrows
-    public static void main(String[] args) {
-        Method method = Test2.class.getMethod("test");
-
-        System.out.println(method);
-        System.out.println(method.getDeclaringClass());
-    }
-
     public class Test2 extends TestClass {
 
     }

+ 5 - 0
hsweb-system/hsweb-system-datasource/hsweb-system-datasource-local/src/main/java/org/hswebframework/web/service/datasource/simple/InDBJtaDynamicDataSourceService.java

@@ -44,6 +44,11 @@ public class InDBJtaDynamicDataSourceService extends JtaDynamicDataSourceService
             public int hashCode() {
                 return entity.hashCode();
             }
+
+            @Override
+            public boolean equals(Object o) {
+                return o instanceof AtomikosDataSourceConfig && hashCode() == o.hashCode();
+            }
         });
         target.setId(entity.getId());
         target.setName(entity.getName());