如何使用@Id的CrudRepository deleteInBatch?

时间:2015-08-06 09:38:56

标签: java spring spring-data

我想使用弹簧CrudRepository.deleteInBatch(List<Entity>)

问题:我必须使用实体对象提供此方法。我想执行一个返回约10k实体的选择查询。

dao.findAllByAge()

问题:我可以以某种方式从@Id查询中返回findBy,并将这些ID改为deleteInBatch吗?

1 个答案:

答案 0 :(得分:1)

查询派生目前不支持投影(有关详细信息和进度,请参阅DATACMNS-89),但首先需要阅读对象。您可以为此声明一个专用的删除查询:

@Modifying
@Transactional
@Query("delete from User u where …")
Long deleteBy…(…)

这将直接在数据库上执行查询,从而批量执行删除。但请注意,这不会触发受影响实体的任何生命周期回调,因为它们不会首先加载。