import java.util.UUID;\r
\r
import org.apache.log4j.Logger;\r
-import org.hibernate.Hibernate;\r
import org.hibernate.HibernateException;\r
+import org.hibernate.engine.spi.SessionImplementor;\r
+import org.hibernate.type.StandardBasicTypes;\r
import org.hibernate.usertype.UserType;\r
+import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
\r
/**\r
* @author a.mueller\r
* @created 22.07.2008\r
- * @version 1.0\r
+ * @version 2.0\r
*/\r
-public class UUIDUserType implements UserType {\r
+public class UUIDUserType extends AbstractUserType implements UserType {\r
+ static final long serialVersionUID = -3959049831344758708L;\r
+\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(UUIDUserType.class);\r
\r
- private static final int[] TYPES = { Types.VARCHAR };\r
-\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#assemble(java.io.Serializable, java.lang.Object)\r
- */\r
- public Object assemble(Serializable cached, Object owner) throws HibernateException {\r
- try {\r
- if(cached == null) {\r
- return null;\r
- } else {\r
- return UUID.fromString(cached.toString());\r
- }\r
- } catch (IllegalArgumentException e) {\r
- throw new HibernateException(e);\r
- }\r
- }\r
+ private static final int[] SQL_TYPES = { Types.VARCHAR };\r
\r
/* (non-Javadoc)\r
* @see org.hibernate.usertype.UserType#deepCopy(java.lang.Object)\r
}\r
}\r
\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#equals(java.lang.Object, java.lang.Object)\r
- */\r
- public boolean equals(Object x, Object y) throws HibernateException {\r
- return (x == y) || (x != null && y != null && (x.equals(y)));\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#hashCode(java.lang.Object)\r
- */\r
- public int hashCode(Object x) throws HibernateException {\r
- return x.hashCode();\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#isMutable()\r
- */\r
- public boolean isMutable() {\r
- return false;\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#nullSafeGet(java.sql.ResultSet, java.lang.String[], java.lang.Object)\r
- */\r
- public Object nullSafeGet(ResultSet resultSet, String[] names, Object o)\r
+ @Override\r
+ public UUID nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) \r
throws HibernateException, SQLException {\r
- String val = (String) Hibernate.STRING.nullSafeGet(resultSet, names[0]);\r
+ String val = (String) StandardBasicTypes.STRING.nullSafeGet(rs, names, session, owner);\r
\r
if(val == null) {\r
return null;\r
}\r
}\r
\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#nullSafeSet(java.sql.PreparedStatement, java.lang.Object, int)\r
- */\r
- public void nullSafeSet(PreparedStatement preparedStatement, Object o, int index)\r
+ @Override\r
+ public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session) \r
throws HibernateException, SQLException {\r
- if (null == o) { \r
- preparedStatement.setNull(index, Types.VARCHAR); \r
+ if (value == null) { \r
+// statement.setNull(index, Types.VARCHAR); old version\r
+ StandardBasicTypes.STRING.nullSafeSet(statement, value, index, session);\r
} else { \r
- UUID uuid = (UUID)o;\r
- preparedStatement.setString(index, uuid.toString()); \r
+ UUID uuid = (UUID)value;\r
+// statement.setString(index, uuid.toString()); //old version\r
+ StandardBasicTypes.STRING.nullSafeSet(statement, uuid.toString(), index, session);\r
}\r
}\r
\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#replace(java.lang.Object, java.lang.Object, java.lang.Object)\r
- */\r
- public Object replace(Object original, Object target, Object owner)\r
- throws HibernateException {\r
- return original;\r
- }\r
\r
/* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#returnedClass()\r
+ * @see org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType#returnedClass()\r
*/\r
+ @Override\r
public Class returnedClass() {\r
return UUID.class;\r
}\r
\r
- /* (non-Javadoc)\r
- * @see org.hibernate.usertype.UserType#sqlTypes()\r
- */\r
+ @Override\r
public int[] sqlTypes() {\r
- return TYPES;\r
+ return SQL_TYPES;\r
}\r
+\r
+ \r
+\r
+\r
+\r
}\r