Geospatial Java обновил подготовленный оператор для MySQL не работает [дубликат]

Насколько я знаю, Java 8 не имеет оптимизации хвостового вызова. Afaik это не связано с фактическим трюком компилятора, потому что это просто, но для сохранения вызова в целях безопасности. Но я предполагаю, что это возможно с перезаписью байт-кода.

0
задан Prabesh Shrestha 11 May 2012 в 09:39
поделиться

3 ответа

MySql не может знать, как хранить объект GEO, или каков его размер. Вы не должны хранить объект так, как вы пытаетесь.

Документация PreparedStatement # setObject () гласит:

Спецификация JDBC указывает стандартное сопоставление типов объектов Java с типами SQL. Данный аргумент будет преобразован в соответствующий тип SQL перед отправкой в ​​базу данных. [...] Этот метод генерирует исключение, если существует двусмысленность, например, если объект имеет класс, реализующий более одного из интерфейсов, названных выше.

0
ответ дан alain.janinm 28 August 2018 в 21:23
поделиться

Он также может быть двоичным, например

PreparedStatement preparedStatement = connection.prepareStatement
("INSERT INTO table (point, polygon) VALUES (PointFromWKB(?), GeomFromWKB(?))");

WKBWriter writer = new WKBWriter();

preparedStatement.setBytes(1, writer.write(point));
preparedStatement.setBytes(2, writer.write(polygon));

preparedStatement.executeUpdate();
1
ответ дан guymac 28 August 2018 в 21:23
поделиться

Ответ

  1. Вам нужно преобразовать объект геометрии, который у вас есть, в хорошо известный текст. Вы найдете информацию о том, как это сделать в документации API vividsolutions .
    geoobject.toText();
    
  2. Вставить / обновить данные с помощью метода mysql GeomFromText .
    INSERT INTO geom VALUES (GeomFromText(@g));
    
3
ответ дан user 28 August 2018 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: