Thanks Emmanuel !
I have created a custom UserType and it works !!!
Here is the code :
Code:
public class SQLBaseLongVarcharType implements UserType
{
/** Creates a new instance of LongVarcharType */
public SQLBaseLongVarcharType()
{
}
public int[] sqlTypes()
{
return new int[] { Types.LONGVARCHAR };
}
public Class returnedClass()
{
return String.class;
}
public boolean equals(Object x, Object y)
throws HibernateException
{
return (x == y) || (x != null && y != null && (x.equals(y)));
}
public Object nullSafeGet(ResultSet inResultSet, String[] names, Object o)
throws HibernateException, SQLException
{
String val = (String)Hibernate.STRING.nullSafeGet(inResultSet, names[0]);
return val;
}
public void nullSafeSet(PreparedStatement inPreparedStatement, Object o, int i)
throws HibernateException, SQLException
{
String valStr = (String) o;
java.io.InputStream val;
try
{
val = new ByteArrayInputStream(valStr.getBytes("UTF-8"));
inPreparedStatement.setAsciiStream(i, val, valStr.length());
} catch (UnsupportedEncodingException ex)
{
ex.printStackTrace();
}
}
public Object deepCopy(Object o) throws HibernateException
{
if (o==null) return null;
return new String(((String) o));
}
public boolean isMutable()
{
return false;
}
/**
* @see org.hibernate.usertype.UserType#assemble(java.io.Serializable, java.lang.Object)
*/
public Object assemble(Serializable cached, Object owner)
{
return cached;
}
/**
* @see org.hibernate.usertype.UserType#disassemble(java.lang.Object)
*/
public Serializable disassemble(Object value)
{
return (Serializable) value;
}
/**
* @see org.hibernate.usertype.UserType#replace(java.lang.Object, java.lang.Object, java.lang.Object)
*/
public Object replace(Object original, Object target, Object owner)
{
return original;
}
/**
* @see org.hibernate.usertype.UserType#hashCode(java.lang.Object)
*/
public int hashCode(Object x)
{
return x.hashCode();
}
}