diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java
index 4865927c095d9d079e86bcf87bde2704bb337a79..7e0d324cb15b2dcc79e17a52589882baab93a7b2 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/AbstractDAO.java
@@ -70,7 +70,8 @@ public abstract class AbstractDAO extends HibernateDaoSupport
 {
 
     private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
-
+    private static final int MAX_STRING_ERROR_LENGTH = 500;
+    
     protected AbstractDAO(final SessionFactory sessionFactory)
     {
         assert sessionFactory != null : "Unspecified session factory";
@@ -98,6 +99,9 @@ public abstract class AbstractDAO extends HibernateDaoSupport
             for (ConstraintViolation v : violations)
             {
                 Object invalidValue = v.getInvalidValue();
+                if(invalidValue instanceof String && (((String) invalidValue).length() > MAX_STRING_ERROR_LENGTH)) {
+                    invalidValue = String.format("%s... (complete value was %d characters)", ((String) invalidValue).substring(0, MAX_STRING_ERROR_LENGTH), ((String) invalidValue).length());
+                }
                 msg += ", " + String.format(v.getMessage(), invalidValue);
             }
             throw new DataIntegrityViolationException(msg.substring(2));