Browse Source

增加update的read-only支持

zhou-hao 6 years ago
parent
commit
ec58cda5ab

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

@@ -1,6 +1,7 @@
 package org.hswebframework.web.dao.mybatis.builder.jpa;
 
 
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.beanutils.BeanUtilsBean;
 import org.hswebframework.ezorm.core.ValueConverter;
 import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData;
@@ -11,6 +12,7 @@ import org.hswebframework.utils.ClassUtils;
 import org.hswebframework.web.dao.mybatis.builder.TypeUtils;
 import org.hswebframework.web.dict.EnumDict;
 import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.util.StringUtils;
 
 import javax.persistence.Column;
 import javax.persistence.Enumerated;
@@ -34,6 +36,7 @@ import java.util.function.Function;
  * @author zhouhao
  * @since 3.0
  */
+@Slf4j
 public class JpaAnnotationParser {
 
     private static final Map<Class, JDBCType> jdbcTypeMapping = new HashMap<>();
@@ -127,6 +130,15 @@ public class JpaAnnotationParser {
             columnMetaData.setLength(column.length());
             columnMetaData.setPrecision(column.precision());
             columnMetaData.setJavaType(descriptor.getPropertyType());
+            if (!column.updatable()) {
+                columnMetaData.setProperty("read-only", true);
+            }
+            if (!column.nullable()) {
+                columnMetaData.setNotNull(true);
+            }
+            if (StringUtils.hasText(column.columnDefinition())) {
+                columnMetaData.setColumnDefinition(column.columnDefinition());
+            }
 
             Class propertyType = descriptor.getPropertyType();