Hibernate удалить все строки и начать индексирование с 1 - PullRequest
0 голосов
/ 03 мая 2020

Я хочу обновлять свою базу данных каждую ночь для новых значений. Проще говоря, начните заново, удалив все строки и сохранив новые данные.

Пока я делаю это, используя эти два запроса:

public void deleteProduct() {
        Transaction transaction = null;
        try (Session session = HibernateUtil.getSessionFactory().openSession()) {
            transaction = session.beginTransaction();
            session.createQuery("DELETE FROM Product").executeUpdate();
        } catch (Exception e) {
            if (transaction != null) {
                transaction.rollback();
            }
            e.printStackTrace();
        }
    }

И

public void saveProduct(Product student) {
        Transaction transaction = null;
        try (Session session = HibernateUtil.getSessionFactory().openSession()) {
            transaction = session.beginTransaction();
            // save the student object
            session.save(student);
            transaction.commit();
        } catch (Exception e) {
            if (transaction != null) {
                transaction.rollback();
            }
            e.printStackTrace();
        }
    }

Для каждого элемента.

Проблема, с которой я имею дело, заключается в том, что после удаления и вставки новых значений. Индексы моих записей начинаются не с нуля, а с номера последней строки перед удалением.

1 Ответ

1 голос
/ 03 мая 2020

Вы можете удалить таблицы и перестроить их с помощью столь же простого оператора sql. Или вы можете игнорировать значение ключа, если оно уникально и выполняет свою работу. Сделайте свой собственный столбец в качестве счетчика, и пусть ключ будет ключом. Это несколько альтернатив прямо здесь. Но я бы перестроил таблицу, если вам действительно нравится этот ключ, чтобы начать сначала с 1.

...