A new type handler must be added to handle UUID fields (Guid for Windows users).
public class UuidTypeHandler extends BaseTypeHandler implements TypeHandler {
@Override
public void setParameter(PreparedStatement ps, int i, Object parameter, String jdbcType) throws SQLException {
ps.setObject(i, parameter);
}
@Override
public Object getResult(ResultSet rs, String columnName) throws SQLException {
String s = rs.getString(columnName);
if (s == null) {
return null;
} else {
return UUID.fromString(s);
}
}
@Override
public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
String s = rs.getString(columnIndex);
if (s == null) {
return null;
} else {
return UUID.fromString(s);
}
}
@Override
public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
String s = cs.getString(columnIndex);
if (s == null) {
return null;
} else {
return UUID.fromString(s);
}
}
@Override
public Object valueOf(String s) {
return UUID.fromString(s);
}
}
It must be initialized inside the sqlMapConfig.xml file into te iBatis configuration
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
...
<typeHandler javaType="java.util.UUID" callback="com.tierraservice.cnh.commons.UuidTypeHandler"/>
...
</sqlMapConfig>