Я пытаюсь вставить полигон в db2 стол, размещенный на г/OS Это моя база данных Пункт WriterSpring Batch обновление DB2 DB2GSE.ST_POLYGON терпит неудачу
<bean id="databaseItemWriter"
class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource" ref="dataSource" />
<property name="sql">
<value>
<![CDATA[
INSERT INTO SAMPLE_GEOMETRIES
(GEO_NAME, GEOMETRY)
VALUES
(?, DB2GSE.ST_POLYGON(?, 1))
]]>
</value>
</property>
<property name="itemPreparedStatementSetter">
<bean class="com.amex.elbs.DAO.GeometriesItemPreparedStatementSetter" />
</property>
</bean>
Это мой обычай подготовил заявление сеттер
класс GeometriesItemPreparedStatementSetter общественность реализует ItemPreparedStatementSetter {
@Override
public void setValues(Geometries item, PreparedStatement ps) throws SQLException {
ps.setString(1, item.Id);
ps.setString(2, item.Polygon);
}
}
Это мой примерный входной файл. Он ограничен линией и имеет идентификатор и координаты многоугольника.
pm251|'POLYGON((-159.335174733889 21.9483433404175,-159.327130348878 22.0446395507162,-159.295025589769 22.1248124949548,-159.343195828355 22.1970166285359,-159.391366885913 22.2291198667724,-159.576012589057 22.2131796383001,-159.712505933171 22.1490592515515,-159.800814224332 22.0366665967853,-159.736592652746 21.9644203111023,-159.640246973766 21.9483657695954,-159.576021285803 21.8841361312636,-159.439545188912 21.8680716835921,-159.335174733889 21.9483433404175))', 1
Приведенный ниже оператор при выполнении на z/OS является успешным.
,INSERT,INTO SAMPLE_GEOMETRIES
(GEO_NAME, GEOMETRY)
VALUES
('PM',
DB2GSE.ST_POLYGON('POLYGON((
-159.335174733889 21.9483433404175,
-159.327130348878 22.0446395507162,
-159.295025589769 22.1248124949548,
-159.343195828355 22.1970166285359,
-159.391366885913 22.2291198667724,
-159.576012589057 22.2131796383001,
-159.712505933171 22.1490592515515,
-159.800814224332 22.0366665967853,
-159.736592652746 21.9644203111023,
-159.640246973766 21.9483657695954,
-159.576021285803 21.8841361312636,
-159.439545188912 21.8680716835921,
-159.335174733889 21.9483433404175))',1))
---------+---------+---------+---------+---------
DSNE615I NUMBER OF ROWS AFFECTED IS 1
Это то, что я получаю, когда я исполняю
Caused by: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-245, SQLSTATE=428F5, SQLERRMC=DB2GSE.ST_POLYGON, DRIVER=4.12.55
at com.ibm.db2.jcc.am.hd.a(hd.java:676)
at com.ibm.db2.jcc.am.hd.a(hd.java:60)
at com.ibm.db2.jcc.am.hd.a(hd.java:127)
at com.ibm.db2.jcc.am.mn.c(mn.java:2621)
at com.ibm.db2.jcc.am.mn.d(mn.java:2609)
at com.ibm.db2.jcc.am.mn.a(mn.java:2085)
at com.ibm.db2.jcc.am.nn.a(nn.java:7054)
at com.ibm.db2.jcc.am.mn.a(mn.java:2062)
at com.ibm.db2.jcc.t4.cb.g(cb.java:136)
at com.ibm.db2.jcc.t4.cb.a(cb.java:41)
at com.ibm.db2.jcc.t4.q.a(q.java:32)
at com.ibm.db2.jcc.t4.rb.i(rb.java:135)
at com.ibm.db2.jcc.am.mn.ib(mn.java:2055)
at com.ibm.db2.jcc.am.nn.rc(nn.java:3219)
at com.ibm.db2.jcc.am.nn.s(nn.java:3370)
at com.ibm.db2.jcc.am.nn.l(nn.java:2499)
at com.ibm.db2.jcc.am.nn.addBatch(nn.java:2438)
at org.springframework.batch.item.database.JdbcBatchItemWriter$1.doInPreparedStatement(JdbcBatchItemWriter.java:190)
at org.springframework.batch.item.database.JdbcBatchItemWriter$1.doInPreparedStatement(JdbcBatchItemWriter.java:185)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644)
... 28 more
Ты говоришь, что был успешным с SPUFI (или что-то еще, если что?), Чтобы проверить SQL? А потом не удалось выполнить его из программы? Вы проверили сообщение/код, https://www-304.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.codes/src/tpc/n245.dita, и можете ли вы сделать что-нибудь из этого? –
Я попробую удалить '' quote; 'ps.setString()' должен сделать это автоматически –