В весенних данных JPA, как мы можем сохранить или обновить на основе существования не первичных ключей - PullRequest
0 голосов
/ 06 марта 2019

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

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Как вы уже сказали, что хотите обновить или сохранить пользователя на основе неосновных ключей Ниже приведен пример того, как вы можете сделать это с Jpa

См. Jpa Doc


 public class User {
        private String firstName;
        private String lastName;
    }

User user = userRepository.findByFirstnameAndLastname();
if(user==null)
{
    //Save New User
}
else
{
    //Update Your User
}

public interface UserRepository extends JpaRepository<User, Long> {
@Query(value = "SELECT * FROM TableName WHERE firstname = ?1 AND lastname = ?2", nativeQuery = true)
User findByFirstnameAndLastname(String firstName,String lastName);

//your Update Query
}
0 голосов
/ 06 марта 2019

Я перефразирую ваш вопрос, чтобы убедиться, что я правильно понял:

Вы начинаете с сущности e1 с пустого первичного ключа.Сущность имеет среди других свойств два свойства (A, B).

Если уже существует существующая сущность с такими же значениями (A, B), которую вы хотите обновить.В противном случае вы хотите вставить строку, соответствующую вашей сущности e1.

Стандартный способ JPA сделать это будет:

  1. запрос с использованием (A, B).
  2. Если вы получаете объект обратно, захватите идентификатор, установите его на e1.Сохранить e1.
  3. Если вы не получите обратно объект, сохраните e1 как есть.

Это, конечно, именно тот запрос, который вы хотите избежать,

Кроме того, вы можете сделать оператор обновления, используя аннотацию @Query, и проверить количество обновлений.Если он равен 0, просто сохраните e1 как новый объект.

Для этого вам нужно указать все поля, которые вы хотите обновить, и он не работает с каскадом, то есть с атрибутами, которые являются объектамисами по себе.

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