Ich habe einige Objekte, die ich nicht löschen kann, und muss stattdessen ein allgemeines Feld namens 'gelöscht' aktualisieren. Ich lese there, dass ich generische Querys schreiben kann, mit #{#entityName}
. Aus diesem Grund habe ich versucht, CrudRepository#delete(…)
Methode wie folgt außer Kraft zu setzen:Wie überschreibt man eine Löschmethode für ein 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);
}
Aber die habe ich einen Komponententest, die mich falsch zeigt!
@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
}
Ist es nicht möglich, CrudRepository
Methoden wie das zu überschreiben?
Warum möchten Sie Repository-Löschverhalten ändern und diese Situation in Ihrer Service-Schicht nicht behandeln? – gipinani
, denn wenn ich dies auf Repository-Ebene handhaben könnte, muss ich keine zusätzlichen Dienste oder Daos implementieren. –