Program: 145670
Project: 145670
Buggy source:
@Override public void resolve2Application(Field aField){
  if (aField != null) {
    if (aField.getTypeInfo().getSqlTypeName().contains("String_Node_Str")) {
      aField.getTypeInfo().setSqlType(java.sql.Types.STRUCT);
      aField.getTypeInfo().setSqlTypeName("String_Node_Str");
      aField.getTypeInfo().setJavaClassName(Geometry.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.NUMERIC)) {
      aField.getTypeInfo().setJavaClassName(BigDecimal.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.VARCHAR)) {
      aField.getTypeInfo().setJavaClassName(String.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.BOOLEAN)) {
      aField.getTypeInfo().setJavaClassName(Boolean.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.DATE)) {
      aField.getTypeInfo().setJavaClassName(java.util.Date.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.BLOB)) {
      if (aField.getTypeInfo().getSqlType() == java.sql.Types.CLOB || aField.getTypeInfo().getSqlType() == java.sql.Types.NCLOB) {
        aField.getTypeInfo().setSqlType(java.sql.Types.CLOB);
        aField.getTypeInfo().setJavaClassName(CompactClob.class.getName());
      }
 else {
        if (aField.getTypeInfo().getSqlType() == java.sql.Types.BINARY || aField.getTypeInfo().getSqlType() == java.sql.Types.VARBINARY) {
          aField.getTypeInfo().setSqlType(java.sql.Types.VARBINARY);
          aField.getTypeInfo().setJavaClassName(CompactBlob.class.getName());
        }
 else         if (aField.getTypeInfo().getSqlType() == java.sql.Types.LONGVARBINARY) {
          aField.getTypeInfo().setSqlType(java.sql.Types.LONGVARBINARY);
          aField.getTypeInfo().setJavaClassName(CompactBlob.class.getName());
        }
 else {
          aField.getTypeInfo().setSqlType(java.sql.Types.BLOB);
          aField.getTypeInfo().setJavaClassName(CompactBlob.class.getName());
        }
      }
    }
    if (aField.getTypeInfo().getSqlType() == java.sql.Types.OTHER) {
      String lTypeName=aField.getTypeInfo().getSqlTypeName();
      if (lTypeName != null && !lTypeName.isEmpty()) {
switch (lTypeName) {
case "String_Node_Str":
          aField.getTypeInfo().setSqlType(java.sql.Types.NVARCHAR);
        aField.getTypeInfo().setJavaClassName(String.class.getName());
      break;
case "String_Node_Str":
    aField.getTypeInfo().setSqlType(java.sql.Types.VARCHAR);
  aField.getTypeInfo().setJavaClassName(String.class.getName());
break;
}
}
}
}
}

Fixed version (ground truth):
@Override public void resolve2Application(Field aField){
  if (aField != null) {
    if (aField.getTypeInfo().getSqlTypeName().contains("String_Node_Str")) {
      aField.getTypeInfo().setSqlType(java.sql.Types.STRUCT);
      aField.getTypeInfo().setSqlTypeName("String_Node_Str");
      aField.getTypeInfo().setJavaClassName(Geometry.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.NUMERIC)) {
      aField.getTypeInfo().setJavaClassName(BigDecimal.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.VARCHAR)) {
      aField.getTypeInfo().setJavaClassName(String.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.BOOLEAN)) {
      aField.getTypeInfo().setJavaClassName(Boolean.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.DATE)) {
      aField.getTypeInfo().setJavaClassName(java.util.Date.class.getName());
    }
    if (SQLUtils.isSameTypeGroup(aField.getTypeInfo().getSqlType(),java.sql.Types.BLOB)) {
      if (aField.getTypeInfo().getSqlType() == java.sql.Types.CLOB || aField.getTypeInfo().getSqlType() == java.sql.Types.NCLOB) {
        aField.setTypeInfo(DataTypeInfo.CLOB.copy());
      }
 else {
        aField.setTypeInfo(DataTypeInfo.BLOB.copy());
      }
    }
    if (aField.getTypeInfo().getSqlType() == java.sql.Types.OTHER) {
      String lTypeName=aField.getTypeInfo().getSqlTypeName();
      if (lTypeName != null && !lTypeName.isEmpty()) {
switch (lTypeName) {
case "String_Node_Str":
          aField.getTypeInfo().setSqlType(java.sql.Types.NVARCHAR);
        aField.getTypeInfo().setJavaClassName(String.class.getName());
      break;
case "String_Node_Str":
    aField.getTypeInfo().setSqlType(java.sql.Types.VARCHAR);
  aField.getTypeInfo().setJavaClassName(String.class.getName());
break;
}
}
}
}
}