मेरे पास कुछ ऑब्जेक्ट्स हैं जिन्हें मैं हटा नहीं सकता हूं, और इसके बजाय 'हटाए गए' नामक एक सामान्य फ़ील्ड को अपडेट करना होगा। मैंने there पढ़ा है कि मैं #{#entityName}
का उपयोग कर जेनेरिक क्वेरी लिख सकता हूं। कारण है कि मैं इस तरह CrudRepository#delete(…)
विधि ओवरराइड करने की कोशिश की:स्प्रिंग डेटा क्रूड रिपोजिटरी पर एक डिलीट विधि को ओवरराइड कैसे करें?
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
क्योंकि अगर मैं इसे रिपोजिटरी लेयर पर संभाल सकता हूं तो मुझे अतिरिक्त सेवाओं या दास को लागू करने की आवश्यकता नहीं है। –