瀏覽代碼

修复无法读取父类的属性问题

zhouhao 7 年之前
父節點
當前提交
4795a9b364

+ 3 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/main/java/org/hswebframework/web/dao/mybatis/builder/jpa/JpaAnnotationParser.java

@@ -104,6 +104,9 @@ public class JpaAnnotationParser {
             Field field = entityClass.getDeclaredField(descriptor.getName());
             ann = AnnotationUtils.findAnnotation(field, type);
         } catch (@SuppressWarnings("all") NoSuchFieldException ignore) {
+            if (entityClass.getSuperclass() != Object.class) {
+                return getAnnotation(entityClass.getSuperclass(), descriptor, type);
+            }
         }
         Method read = descriptor.getReadMethod(),
                 write = descriptor.getWriteMethod();

+ 20 - 0
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/mybatis/builder/jpa/AbstractEntity.java

@@ -0,0 +1,20 @@
+package org.hswebframework.web.dao.mybatis.builder.jpa;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.Column;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ * @since
+ */
+@Getter
+@Setter
+public class AbstractEntity {
+
+    @Column(name = "id")
+    private Long id;
+}

+ 3 - 2
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/mybatis/builder/jpa/JpaAnnotationParserTest.java

@@ -1,8 +1,8 @@
 package org.hswebframework.web.dao.mybatis.builder.jpa;
 
 import org.hswebframework.ezorm.rdb.meta.RDBTableMetaData;
+import org.junit.Assert;
 import org.junit.Test;
-import org.springframework.util.Assert;
 
 import static org.junit.Assert.*;
 
@@ -19,6 +19,7 @@ public class JpaAnnotationParserTest {
     public void testParse() {
         RDBTableMetaData metaData = JpaAnnotationParser.parseMetaDataFromEntity(TestEntity.class);
 
-        Assert.notNull(metaData, "metadata parse error");
+        Assert.assertNotNull(metaData);
+        Assert.assertEquals(metaData.getColumns().size(), 4);
     }
 }

+ 1 - 3
hsweb-commons/hsweb-commons-dao/hsweb-commons-dao-mybatis/src/test/java/org/hswebframework/web/dao/mybatis/builder/jpa/TestEntity.java

@@ -11,9 +11,7 @@ import javax.persistence.Table;
  */
 @Table(name = "s_test")
 @Data
-public class TestEntity {
-    @Column(name = "id")
-    private String id;
+public class TestEntity extends AbstractEntity {
 
     @Column(name = "name")
     private String name;