[jbpm-commits] JBoss JBPM SVN: r3548 - jbpm3/branches/aguizar/modules/core/src/main/java/org/jbpm/db/hibernate.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Dec 24 15:45:38 EST 2008


Author: alex.guizar at jboss.com
Date: 2008-12-24 15:45:37 -0500 (Wed, 24 Dec 2008)
New Revision: 3548

Modified:
   jbpm3/branches/aguizar/modules/core/src/main/java/org/jbpm/db/hibernate/TextType.java
Log:
restrict text type workaround to sybase, because it breaks hsqldb

Modified: jbpm3/branches/aguizar/modules/core/src/main/java/org/jbpm/db/hibernate/TextType.java
===================================================================
--- jbpm3/branches/aguizar/modules/core/src/main/java/org/jbpm/db/hibernate/TextType.java	2008-12-24 19:58:13 UTC (rev 3547)
+++ jbpm3/branches/aguizar/modules/core/src/main/java/org/jbpm/db/hibernate/TextType.java	2008-12-24 20:45:37 UTC (rev 3548)
@@ -33,10 +33,14 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.hibernate.HibernateException;
+import org.hibernate.cfg.Environment;
 import org.hibernate.type.Type;
 import org.hibernate.usertype.UserType;
 import org.hibernate.util.EqualsHelper;
 import org.hibernate.util.StringHelper;
+import org.jbpm.JbpmContext;
+import org.jbpm.persistence.db.DbPersistenceServiceFactory;
+import org.jbpm.svc.Services;
 
 /**
  * @author Alejandro Guizar
@@ -197,9 +201,21 @@
   }
 
   public void setNull(PreparedStatement st, int index) throws HibernateException, SQLException {
-    st.setCharacterStream(index, null, 0);
+    if (getHibernateDialect().indexOf("Sybase") == -1) {
+      st.setNull(index, sqlType());
+    }
+    else {
+      // JBPM-1818: workaround for SQL state JZ0SL: "Unsupported SQL type" with jConnect
+      st.setCharacterStream(index, null, 0);
+    }
   }
 
+  private String getHibernateDialect() {
+    DbPersistenceServiceFactory factory = (DbPersistenceServiceFactory) JbpmContext
+        .getCurrentJbpmContext().getServiceFactory(Services.SERVICENAME_PERSISTENCE);
+    return factory.getConfiguration().getProperty(Environment.DIALECT);
+  }
+
   public Object replace(Object original, Object target, Object owner) throws HibernateException {
     return original;
   }
@@ -209,9 +225,13 @@
   }
 
   public int[] sqlTypes() {
-    return new int[] { Types.CLOB };
+    return new int[] { sqlType() };
   }
 
+  public int sqlType() {
+    return Types.CLOB;
+  }
+
   public String nullSafeToString(Object value) throws HibernateException {
     return value == null ? null : toString(value);
   }




More information about the jbpm-commits mailing list