【问题标题】:Does spring CrudRepository support deleteBy of a list?spring CrudRepository 是否支持列表的 deleteBy?
【发布时间】:2015-03-19 17:56:34
【问题描述】:
Spring Data CrudRepository 是否提供通过非主键属性删除条目列表?
public interface MyRepository extends CrudRepository<MyEntity, Long> {
@Modifying
@Transactional
public void deleteByName(List<String> names);
}
【问题讨论】:
标签:
java
spring
spring-data
spring-data-jpa
【解决方案1】:
是的,这是可能的,documentation 通过以下示例解释了 In 关键字。示例进一步表明,列表参数不必是实体主键的类型:
In -> findByAgeIn(Collection<Age> ages)
In 和 NotIn 也将 Collection 的任何子类以及数组或可变参数作为参数。
然后这又可以应用于您的删除查询:
除了查询方法之外,还提供计数和删除查询的查询派生。
类似:
void deleteByNamesIn(List<String> names);
【解决方案2】:
可以通过不是主键的属性进行删除。
对于 list 参数,我认为您正在寻找 in 运算符,因此请尝试以下操作:
void deleteByNamesIn(List<String> names);
(我可能会添加另一个小评论:接口中定义的方法默认情况下是公共的,因为接口声明中的私有方法没有什么意义。所以在我看来,在这里删除public 是一种很好的风格)