Удалить запрос, работающий в SQLYog, но не в JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Удалить запрос, работающий в SQLYog, но не в Java

Сообщение Anonymous »

Код: Выделить всё

 @Override
public String getDeleteQuery() {
return "DELETE FROM prod_evidencija WHERE idProdavac = ? AND idProdavnica = ? AND datum = ?";
}

@Override
public void fillDeleteStatement(PreparedStatement ps) throws SQLException {

ps.setInt(1, prodavac.getIdProdavac());
ps.setInt(2, prodavnica.getIdProdavnica());
ps.setDate(3, java.sql.Date.valueOf(datum));
// ps.setObject(3, datum);
System.out.println(datum); //2022-07-24
}
Это мой запрос на удаление объекта типа prod_evidencija, который имеет составной первичный ключ, состоящий из внешних ключей idProdavac и idProdavnica, а также собственные данные поля LocalDate. (эти 3 — единственные столбцы в таблице БД. Тип данных столбца в базе данных — дата). prod_evidencija — ассоциативный класс объектов prodavac и prodavnica

Код: Выделить всё

public  Object delete(T obj) throws SQLException {
try (PreparedStatement ps = Konekcija.getInstance().getKonekcija()
.prepareStatement(obj.getDeleteQuery())) {

obj.fillDeleteStatement(ps);
System.out.println(ps);
int affectedRows = ps.executeUpdate();
System.out.println(affectedRows);
return affectedRows > 0;
}
}
Это метод брокера базы данных, который должен удалять объект, и он работает для других типов объектов (которые не имеют объектов типа даты, если это имеет значение). В этом случае он печатает правильно заполненный оператор:

com.mysql.cj.jdbc.ClientPreparedStatement: DELETE FROM prod_evidencija WHERE idProdavac = 1 AND idProdavnica = 2 AND datum = '2026-05-11'

Когда этот запрос выполняется вручную в SQLyog, он работает без проблем. Однако в моем Java-приложении после этого ничего не происходит, возвращается 0 затронутых строк, почему я понятия не имею. Я подумал, что это может быть что-то связанное с датой, поэтому попробовал поставить setObject и поэкспериментировать с форматтером, но безрезультатно.
Запрос на обновление, который меняет дату для комбинации идентификаторов, работает нормально. Вставьте тоже.

Исключений и ошибок нет (кроме сделанных мною распечаток), как будто оно просто растворилось в воздухе при выполнении обновления. После добавления отпечатков в fillDeleteStatement() для идентификаторов и даты напечатанная информация также является правильной и соответствует данным в базе. При необходимости я могу предоставить другие запросы, код и информацию.

Вернуться в «JAVA»