我想使用弹簧CrudRepository.deleteInBatch(List<Entity>)
。
问题:我必须使用实体对象提供此方法。我想执行一个返回约10k实体的选择查询。
dao.findAllByAge()
问题:我可以以某种方式从@Id
查询中返回findBy
,并将这些ID改为deleteInBatch
吗?
答案 0 :(得分:1)
查询派生目前不支持投影(有关详细信息和进度,请参阅DATACMNS-89),但首先需要阅读对象。您可以为此声明一个专用的删除查询:
@Modifying
@Transactional
@Query("delete from User u where …")
Long deleteBy…(…)
这将直接在数据库上执行查询,从而批量执行删除。但请注意,这不会触发受影响实体的任何生命周期回调,因为它们不会首先加载。