Каков наилучший способ сохранить или обновить или удалить коллекцию сущностей, используя данные весны jpa? - PullRequest
0 голосов
/ 24 августа 2018

У меня есть сотрудник Сотрудник.Например: я сохранил несколько записей в базе данных, как показано ниже:

employeeRepository.save(employees);

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

Пожалуйста, дайте мне знать простой способ сделать это в Spring data JPA.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

В основном вы хотите максимально использовать возможности производных запросов Spring Data JPA s!Вы определенно не хотите писать свой собственный шаблонный код, потому что он полностью отрицает цель Spring Data JPA!

Удалить

Лучший (и самый чистый) способсделать это, чтобы Spring Data JPA получил запрос для вас:

public interface EmployeeRepository extends CrudRepository<Employee, Long> {

    Long deleteByIdIn(List<Long> employeeIdsToDelete);

}

См. этот ответ .

Обновление

Обновления могут быть выполнены следующим образом:

@Modifying
@Query("update Employee empl set empl.param =:param where empl.id =:emplId")
void updateEmployees(@Param("emplId") Long emplId, @Param("param") paramValue);

И в противном случае можно выполнить комбинацию поиска и изменения (вероятно, в методе Service:

public void myEmployeeServiceUpdateMethod(List<Long> emplIds) {
    List<Employee> employees = employeeRepository.findByIdIn(emplIds);
    employees.forEach(empl -> empl.setParam("NewParam!");
}

И Spring JPA автоматически сбросит и обновит эти значения для вас!

См. этот ответ .

Создать

Создает, что вы уже делаете правильно. Просто передайте список новых сущностей на #save.

0 голосов
/ 24 августа 2018

Создание и использование EmployeeRepository Чтобы создать экземпляр нашего EmployeeRepository , который расширил CrudRepository , мы можем использовать внедрение зависимостей.

public class EmployeeService {
    @Autowired    
    private EmployeeRepository employeeRepository;
    Employee saveEmployee(Employee employee){
    employeeRepository.save(employee);  
    }
    List<Employee> saveEmployee(List<Employee> employees){
        for(Employee employee:employees){
            saveEmployee(employee);         }   
    } 
    void deleteEmployee(Employee employee){
        employeeRepository.delete(employee);
    }
    void deleteEmployee(List<Employee> employees){
        for(Employee employee:employees){
            deleteEmployee(employee);
        }
    } 
}

ТеперьМы готовы использовать методы CrudRepository.Найдите пример для некоторых из его методов.

  1. Создание и обновление одной сущности:

Employe saveEmployee = employeeRepository.save (employee);

Удалить одну сущность ::

employeeRepository.delete (employee);

Если вы выполняете массовую операцию, вы можете переопределить saveEmployee () и deleteEmployee () для EmployeeService class.

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