簡體   English   中英

如何刪除實體列表

[英]How to delete a list of entities

我有一個 JPA 查詢來刪除存儲在列表中的選定實體。 我目前正在通過內置的 JPA delete() 方法 1 by 1 刪除循環中的實體。有沒有辦法只傳入列表而不是循環它?

當前的實現有效,但循環刪除 1 個 1。出於其他原因,我需要初始查詢來獲取實體列表,因此不想更改它。 只是一種傳遞要刪除的實體列表的方法。 請指教。 謝謝。

注意:如果重要的話,這適用於 Java 8 和 Spring 4.3。

@GetMapping("/delete/{name}/{count}")
public String delete(@PathVariable String name, @PathVariable int count){
    boolean isDelete = true;
    while (isDelete){
        //1st query
        List<PersonEntity> results = personService.get(name, count);
        if(results != null && !results.isEmpty()){
            System.out.println("Deleting following: ");
            //2nd query
            results.forEach(p -> {
                System.out.println(p.getName());
                personService.delete(p);
            });
        } else {
            isDelete = false;
        }
    }
    return "Done!";
}

你可以嘗試這樣的事情:

List<PersonEntity> results = personService.get(name, count);
if(results != null && !results.isEmpty()) {
    List<Integer> personIds = results.stream()
        .map(personIds)
        .collect(Collectors.toList());
    personService.deleteManyById(personIds);

在您的服務中:

public void deleteManyById(List<Integer> ids) {
    personRepository.deleteByIdIn(ids);
}

在你的倉庫中(假設它是一個 spring JpaRepository):

void deleteByIdIn(List<Integer> ids);

請注意,dbs 對可以在 IN 條件中傳遞的參數數量有限制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM