saveOrUpdate не работает в Spring Data с базой данных H2 - PullRequest
0 голосов
/ 25 января 2019

В моей программе есть цикл for, в котором я сохраняю новые объекты в базе данных.Это выглядит как

for (String value: readvalue.readValue()) {
            Value value= getValueForSomething(something);
            System.out.println(value);
            valueRepository.save(value);
        }

И этот фрагмент кода выполняется каждые 30 секунд и сохраняет в базе данных все значения.Некоторые значения в базе данных имеют два одинаковых поля и одно другое.Как я могу обновить значения в базе данных h2 вместо вставки новых?

1 Ответ

0 голосов
/ 25 января 2019

Я бы предложил, чтобы в вашем цикле for был создан метод, который проверяет, существует ли объект в вашей базе данных H2, запрашивая его, используя уникальный идентификатор, такой как id.Используйте следующий пример запроса RDB в качестве ссылки:

    private static final String PRODUCT_ALREADY_EXISTS_QUERY = "SELECT EXISTS(SELECT 1"
        + " FROM inventory.products "
        + " WHERE 1 = 1"
        + " AND id = :id)";

Затем, если запись существует, вызовите метод обновления, который использует запрос UPDATE с использованием уникального идентификатора.Пример запроса RDB:

    private static final String UPDATE_QUERY = "UPDATE inventory.products"
        + " SET (company_id, name, price, type, quantity, created_date, last_modified_date) = "
        + " (:companyId, :productName, :price, :productType, :quantity, :createdDate, :lastModifiedDateTime)"
        + " WHERE id = :id ";

Если запись не существует, просто создайте запись, как вы.

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