8
我有一些我無法刪除的對象,並且必須更新一個名爲'deleted'而不是它的公共字段。我讀there,我可以使用#{#entityName}
編寫通用querys。 出於這個原因,我試圖重寫CrudRepository#delete(…)
方法是這樣的:如何覆蓋Spring Data CrudRepository上的刪除方法?
public interface DeleteableRepository<T, ID extends Serializable> extends CrudRepository<T,ID>{
@Override
@Query("UPDATE #{#entityName} x set x.deleted = 1 where x.id = ?1")
public void delete(ID id);
}
但我有一個單元測試,顯示我錯了!
@Test
public void testDelete() {
SomeDeleteableObject sdo = new SomeDeletableObject();
sdo = getDeleteableRepository().create(sdo);
Assert.assertNotNull(sdo);
Assert.assertNotNull(sdo.getId());
Assert.assertFalse(sdo.isDeleted());
getDeleteableRepository().delete(sdo);
sdo = getDeleteableRepository().findOne(sdo.getId());
//Fails here
}
是不是可以重寫CrudRepository
這樣的方法?
爲什麼要修改刪除存儲庫行爲並且不處理服務層中的這種情況? – gipinani
,因爲如果我可以在存儲庫層上處理這個問題,則不需要實現額外的服務或Daos。 –