[英]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);
}
void deleteByIdIn(List<Integer> ids);
請注意,dbs 對可以在 IN 條件中傳遞的參數數量有限制
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.