如何修改Spring Data JPA默认查询和删除方法?
例如:
在构建环境中,每个表都有一个字段enabled
。
删除此数据时,字段enabled
为false
选择数据时,仅选择enabled
为true
。
因此,spring data jpa默认方法无法做到这一点。
如何修改?
我找到了方法
/**
* 自己写的删除方法
*
* @param aLong 删除的id
*/
@Modifying
@Query("UPDATE Book SET enabled = false WHERE id = :id")
@RestResource(exported = false)
void delete(@Param("id") Long aLong);
/**
* 重写删除方法
*
* @param entity 删除的实体
*/
@Override
default void delete(Book entity){
delete(entity.getId());
}
但是JpaRepository
有更多的方法,我有更多的表。太可怕了!
你能帮我吗?
谢谢!
答案 0 :(得分:1)
您不能这样做,因为Spring-data-rest并非旨在那样工作。 HTTP DELETE将始终删除资源。实际上,您想要的只是更新属性值(将设置从true启用为false)。 实际上,您无需执行任何操作即可完成您想做的事情,因为有了Spring-data-rest,您可以在任何资源上调用PATCH(或UPDATE)来更新它。 删除数据时,只需进行PATCH调用而不是DELETE调用即可将启用的布尔值设置为false。
Target
答案 1 :(得分:0)
没有符合JPA的方法。 如果您碰巧使用了Hibernate,则可以自定义用于删除和选择的查询。
有关详细信息,请参见https://vladmihalcea.com/the-best-way-to-soft-delete-with-hibernate/。