Я пытаюсь поместить длинную WKT (длинную строку о географической информации) в пространственную функцию оракула SDO_GEOMETRY
, чтобы преобразовать WKT в тип геометрии оракула, используя mybatis. В базе данных нет столбца, в котором хранится WKT, он используется только как параметр в указанной функции. Тип элемента java - String
, когда я пытаюсь вставить его, он возвращает ошибку, говоря, что строка слишком длинная. Это указывает на то, что строка не преобразуется в CLOB. Как я могу это сделать?
Я попытался использовать это в начале файла mybatis .xml:
<resultMap type="example.Building" id="BaseResultMap">
<result property="geom" column="geom" jdbcType="CLOB"
javaType = "java.lang.String" typeHandler ="example.Utils.OracleClobTypeHandler"/>
</resultMap>
и у меня настроен класс OracleClobTypeHandler
.
Я также пытался использовать #{wkt,jdbcType=CLOB}
, но это ни к чему не привело.
РЕДАКТИРОВАТЬ: это метод SetParameter
в OracleClobTypeHandler
:
@Override
public void setParameter(PreparedStatement arg0, int arg1, Object arg2, JdbcType arg3) throws SQLException {
CLOB clob = CLOB.getEmptyCLOB();
clob.setString(1, (String) arg2);
arg0.setClob(arg1, clob);
}
<resultMap />
не имеет значения, поскольку используется при сопоставлении результата запроса с объектом Java. Вы пытались указатьtypeHandler
в ссылке на параметр, например.#{wkt,typeHandler=example.Utils.OracleClobTypeHandler}
? Кстати, если это внутренний класс, на него следует ссылаться какexample.Utils$OracleClobTypeHandler
. Если это все еще не работает, пожалуйста, опубликуйте полную трассировку стека. - person ave   schedule 29.05.2019org.springframework.jdbc.UncategorizedSQLException: Could not set parameters for mapping: ParameterMapping{property='wkt', mode=IN, javaType=class java.lang.String, jdbcType=CLOB, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: java.sql.SQLException: Invalid empty lob operation. ; uncategorized SQLException; SQL state [99999]; error code [17098]; Invalid empty lob operation.; nested exception is java.sql.SQLException: Invalid empty lob operation.
- person John_Doe   schedule 30.05.2019TypeHandler
, я изменилoracle.sql.CLOB
наjava.sql.Clob
и внес другие изменения, и тогда это сработало. Вы должны опубликовать свой комментарий в качестве ответа, чтобы я мог его принять. - person John_Doe   schedule 30.05.2019