Проблемы с удалением данных из базы данных - PullRequest
0 голосов
/ 13 июля 2011

Я использую Hibernate для доступа к своей базе данных.Я хотел бы удалить набор полей по функции критерия.Моя база данных - PostgreSQL, а мой код Java:

public void deleteAttr(String parameter){
    Configuration cfg = new Configuration();
    cfg.configure(resource.getString("hibernate_config_file"));
    SessionFactory sessionFactory = cfg.buildSessionFactory();
    session = sessionFactory.openSession(); 
    Transaction tx = session.beginTransaction();
    tx.begin();
    String sql = "delete from attribute where timestamp > to_date('"+parameter+"','YYYY-MM-DD')"
    session.createSQLQuery(sql);
    tx.commit();
}

Метод работает, но не удаляет данные из базы данных.Я также проверил предложение SQL в PgAdmin, и это работает, но не в коде.Зачем?Кто-то мне помогает?

Заранее спасибо!

1 Ответ

2 голосов
/ 13 июля 2011

Это потому, что вы создаете запрос, но не выполняете его:

String sql = "delete from attribute where timestamp > to_date('"+parameter+"','YYYY-MM-DD')"
Query query = session.createSQLQuery(sql);
query.executeUpdate();

Вы должны действительно использовать связанные именованные параметры, а не конкатенацию строк для передачи параметров в запросе: обычно это большеэффективный, он гораздо более надежный, но, прежде всего, он не открывает возможности для атак с использованием SQL-инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...