diff --git a/contact-center/app/src/main/java/com/chatopera/cc/aspect/SyncDatabaseAspect.java b/contact-center/app/src/main/java/com/chatopera/cc/aspect/SyncDatabaseAspect.java
index 6cc12b49afe035fef8b1d145a9630f5202ece382..22945c252125be0d3215fbc00f7d655cb533048c 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/aspect/SyncDatabaseAspect.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/aspect/SyncDatabaseAspect.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import javax.persistence.RollbackException;
 import java.util.List;
 
 @Aspect
@@ -70,7 +71,7 @@ public class SyncDatabaseAspect {
                     try {
                         // 鏇存柊鏃讹紝鎵ц姝や唬鐮侊紝浣嗘槸鏂板缓鏃朵細鎶ラ敊
                         dbDataRes.saveOrUpdate(data);
-                    } catch (StaleStateException ex) {
+                    } catch (RollbackException ex) {
                         // 鎶ラ敊鐨勬儏鍐典笅锛屾墽琛屾浠g爜
                         dbDataRes.save(data);
                     }
diff --git a/contact-center/app/src/main/java/com/chatopera/cc/model/EntCustomer.java b/contact-center/app/src/main/java/com/chatopera/cc/model/EntCustomer.java
index 84ee84c43cc29dbe4ec335c27669d8289006e077..3e7e5b3bd5b22bb4f81abf08f1060dc73986a4e6 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/model/EntCustomer.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/model/EntCustomer.java
@@ -20,6 +20,8 @@ package com.chatopera.cc.model;
 import com.chatopera.cc.basic.MainUtils;
 import org.hibernate.annotations.GenericGenerator;
 import org.springframework.data.elasticsearch.annotations.Document;
+import org.springframework.data.elasticsearch.annotations.Field;
+import org.springframework.data.elasticsearch.annotations.FieldType;
 
 import javax.persistence.*;
 import java.util.Date;
@@ -37,6 +39,7 @@ public class EntCustomer extends ESBean implements java.io.Serializable {
 
 	private String id = MainUtils.getUUID();
 
+	@Field(type = FieldType.Text, fielddata = true)
 	private String name;
 	private String etype;
 	private String ekind;
@@ -89,6 +92,7 @@ public class EntCustomer extends ESBean implements java.io.Serializable {
 	private String processid;
 	private String description;
 
+	@Field(type = FieldType.Text, fielddata = true)
 	private String creater;
 	private String username;
 	private String updateuser;
diff --git a/contact-center/app/src/main/java/com/chatopera/cc/persistence/hibernate/BaseService.java b/contact-center/app/src/main/java/com/chatopera/cc/persistence/hibernate/BaseService.java
index 270b947498800a16b54553ccd4dbb3bc782d945d..bd6f38629a249086a33417441b7b725da521e71e 100644
--- a/contact-center/app/src/main/java/com/chatopera/cc/persistence/hibernate/BaseService.java
+++ b/contact-center/app/src/main/java/com/chatopera/cc/persistence/hibernate/BaseService.java
@@ -46,14 +46,17 @@ public class BaseService<T> {
      */
     public void saveOrUpdateAll(final List<Object> ts) {
         Session session = hibernateFactory.openSession();
+        Transaction tx = session.beginTransaction();
         try {
-            Transaction tx = session.beginTransaction();
             for (final Object t : ts) {
                 session.saveOrUpdate(t);
             }
             tx.commit();
         } catch (Exception ex) {
-            ex.printStackTrace();
+            if (ex != null) {
+                tx.rollback();
+            }
+            throw ex;
         } finally {
             session.close();
         }
@@ -61,12 +64,15 @@ public class BaseService<T> {
 
     public void saveOrUpdate(final Object t) {
         Session session = hibernateFactory.openSession();
+        Transaction tx = session.beginTransaction();
         try {
-            Transaction tx = session.beginTransaction();
             session.saveOrUpdate(t);
             tx.commit();
         } catch (Exception ex) {
-            ex.printStackTrace();
+            if (ex != null) {
+                tx.rollback();
+            }
+            throw ex;
         } finally {
             session.close();
         }
@@ -74,12 +80,15 @@ public class BaseService<T> {
 
     public void save(final Object t) {
         Session session = hibernateFactory.openSession();
+        Transaction tx = session.beginTransaction();
         try {
-            Transaction tx = session.beginTransaction();
             session.save(t);
             tx.commit();
         } catch (Exception ex) {
-            ex.printStackTrace();
+            if (ex != null) {
+                tx.rollback();
+            }
+            throw ex;
         } finally {
             session.close();
         }
@@ -92,14 +101,17 @@ public class BaseService<T> {
      */
     public void deleteAll(final List<Object> objects) {
         Session session = hibernateFactory.openSession();
+        Transaction tx = session.beginTransaction();
         try {
-            Transaction tx = session.beginTransaction();
             for (final Object t : objects) {
                 session.delete(session.merge(t));
             }
             tx.commit();
         } catch (Exception ex) {
-            ex.printStackTrace();
+            if (ex != null) {
+                tx.rollback();
+            }
+            throw ex;
         } finally {
             session.close();
         }
@@ -107,12 +119,15 @@ public class BaseService<T> {
 
     public void delete(final Object object) {
         Session session = hibernateFactory.openSession();
+        Transaction tx = session.beginTransaction();
         try {
-            Transaction tx = session.beginTransaction();
             session.delete(session.merge(object));
             tx.commit();
         } catch (Exception ex) {
-            ex.printStackTrace();
+            if (ex != null) {
+                tx.rollback();
+            }
+            throw ex;
         } finally {
             session.close();
         }
@@ -122,8 +137,8 @@ public class BaseService<T> {
     public List<T> list(final String bean) {
         List<T> dataList = null;
         Session session = hibernateFactory.openSession();
+        Transaction tx = session.beginTransaction();
         try {
-            Transaction tx = session.beginTransaction();
             dataList = session.createCriteria(Class.forName(bean)).list();
             tx.commit();
         } catch (Exception ex) {