diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/AuditNode.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/AuditNode.java
index 4f5cf06..f2663c7 100644
--- a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/AuditNode.java
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/AuditNode.java
@@ -2,6 +2,7 @@
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolBatch.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolBatch.java
index b6c85ee..15e99b1 100644
--- a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolBatch.java
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolBatch.java
@@ -56,13 +56,13 @@
 	/**
 	 * 开始日期（yyyy-MM-dd）
 	 */
-	@Column(name = "START_DATE",columnDefinition="datetime(20)  comment '开始日期（yyyy-MM-dd）'")
+	@Column(name = "START_DATE",columnDefinition="datetime(20)  comment '开始日期yyyy-MM-dd'")
 	private Date startDate;
 	
 	/**
 	 * 结束日期（yyyy-MM-dd）
 	 */
-	@Column(name = "END_DATE",columnDefinition="datetime(20)  comment '结束日期（yyyy-MM-dd）'")
+	@Column(name = "END_DATE",columnDefinition="datetime(20)  comment '结束日期yyyy-MM-dd'")
 	private Date endDate;
 	/**
 	 * 离校流程
diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolStudent.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolStudent.java
index 4727aaf..857f197 100644
--- a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolStudent.java
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/LeaveSchoolStudent.java
@@ -85,14 +85,14 @@
 	/**
 	 * 毕业年份（yyyy）
 	 */
-	@Column(name = "GRADUATE_YEAR",columnDefinition="varchar(10)  comment '毕业年份（yyyy）'")
+	@Column(name = "GRADUATE_YEAR",columnDefinition="varchar(10)  comment '毕业年份yyyy'")
 	private String graduateYear;
 	
 	
 	/**
 	 * 毕业月份（MM）
 	 */
-	@Column(name = "GRADUATE_MONTH",columnDefinition="varchar(10)  comment '毕业月份（MM）'")
+	@Column(name = "GRADUATE_MONTH",columnDefinition="varchar(10)  comment '毕业月份MM'")
 	private String graduateMonth;
 	
 	
diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/AuditType.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/AuditType.java
index 3b23977..b65c8f8 100644
--- a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/AuditType.java
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/AuditType.java
@@ -8,23 +8,33 @@
  */
 public enum AuditType{
 	
-	MANUAL("手动"), AUTO("自动");  
-	
+	MANUAL("MANUAL","手动"), AUTO("AUTO","自动");  
+	private String code;
 	private String value;
-
-	private AuditType(String value) {
+	
+	private AuditType(String code, String value) {
+		this.code = code;
 		this.value = value;
 	}
-
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
 	public String getValue() {
 		return value;
 	}
-
 	public void setValue(String value) {
 		this.value = value;
 	}
 	
-	
-	
-	
+    public static String getValue(String code) {  
+        for (AuditType enm : AuditType.values()) {  
+            if (code.equals(enm.getCode())) {  
+                return enm.value;  
+            }  
+        }  
+        return null;  
+    }  
 }
diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/DefaultAuditStatus.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/DefaultAuditStatus.java
index 4f35161..e879eac 100644
--- a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/DefaultAuditStatus.java
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/DefaultAuditStatus.java
@@ -8,12 +8,21 @@
  */
 public enum DefaultAuditStatus {
 	
-	TO_BE_AUDITED("待审核"), APPROVED("审核通过"), NOT_PASSED("审核不通过");  
-	
+	TO_BE_AUDITED("TO_BE_AUDITED","待审核"), APPROVED("APPROVED","审核通过"), NOT_PASSED("NOT_PASSED","审核不通过");  
+
+	private String code;
 	private String value;
-	private DefaultAuditStatus( String value) {
+	
+	private DefaultAuditStatus(String code, String value) {
+		this.code = code;
 		this.value = value;
 	}
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
 	public String getValue() {
 		return value;
 	}
@@ -21,4 +30,13 @@
 		this.value = value;
 	}
 	
+    public static String getValue(String code) {  
+        for (DefaultAuditStatus enm : DefaultAuditStatus.values()) {  
+            if (code.equals(enm.getCode())) {  
+                return enm.value;  
+            }  
+        }  
+        return null;  
+    }
+	
 }
diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/Scope.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/Scope.java
index a84da3c..7cf416e 100644
--- a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/Scope.java
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/domain/enums/Scope.java
@@ -8,13 +8,21 @@
  */
 public enum Scope {
 	
-	SCHOOL("全校范围"), DEPARTMENT("院系范围"), INSTRUCTOR("辅导员范围");  
+	SCHOOL("SCHOOL","全校范围"), DEPARTMENT("DEPARTMENT","院系范围"), INSTRUCTOR("INSTRUCTOR","辅导员范围");  
 	
+	private String code;
 	private String value;
 	
-	private Scope( String value) {
+	private Scope(String code, String value) {
+		this.code = code;
 		this.value = value;
 	}
+	public String getCode() {
+		return code;
+	}
+	public void setCode(String code) {
+		this.code = code;
+	}
 	public String getValue() {
 		return value;
 	}
@@ -22,4 +30,13 @@
 		this.value = value;
 	}
 	
+    public static String getValue(String code) {  
+        for (Scope enm : Scope.values()) {  
+            if (code.equals(enm.getCode())) {  
+                return enm.value;  
+            }  
+        }  
+        return null;  
+    }
+	
 }
diff --git a/leaveschool/leaving/src/main/resources/application.yml b/leaveschool/leaving/src/main/resources/application.yml
index 266cf99..8b4ef7a 100644
--- a/leaveschool/leaving/src/main/resources/application.yml
+++ b/leaveschool/leaving/src/main/resources/application.yml
@@ -15,12 +15,13 @@
     name: leaving
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://172.50.10.15:3306/leave_school?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
+    #url: jdbc:mysql://172.50.10.15:3306/leave_school?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
+    url: jdbc:mysql://172.18.101.207:3306/leave_school?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
     username: leave_school
     password: 111111
   jpa:
     hibernate:
-      ddl-auto: update
+      ddl-auto: none
       naming:
         physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
