Hallo,
ich versuche mir gerade einen generische CRUD Service zu bauen, um mir den immer wieder kehrenden crud Code für die einzelnen Implementierungen zu sparen.
Funktioniert auch ganz gut, nur frage ich mich: kann ich irgendwie mit Generics auf eine (nicht bekannte) Methode wie getId() zugreifen?
In der Facade würde ich gerne nur ein delete(c) ausführen. Und mir die id dann innerhalb des Services angeln. Nur geht dort t.getId() verständlicherweise nicht.
Deshalb: gibt es eine Möglichkeit sowas zu implementieren, oder muss ich mit der Lösung leben das komplette Objekt und zusätzlich noch seine ID übergeben zu müssen?
Danke
ich versuche mir gerade einen generische CRUD Service zu bauen, um mir den immer wieder kehrenden crud Code für die einzelnen Implementierungen zu sparen.
Funktioniert auch ganz gut, nur frage ich mich: kann ich irgendwie mit Generics auf eine (nicht bekannte) Methode wie getId() zugreifen?
In der Facade würde ich gerne nur ein delete(c) ausführen. Und mir die id dann innerhalb des Services angeln. Nur geht dort t.getId() verständlicherweise nicht.
Deshalb: gibt es eine Möglichkeit sowas zu implementieren, oder muss ich mit der Lösung leben das komplette Objekt und zusätzlich noch seine ID übergeben zu müssen?
Danke
Java:
public class BaseService<T> {
@Inject
EntityManager em;
@Override
public void delete(T t, Object id) {
Object ref = this.em.getReference(t.getClass(), id); //t.getId() geht hier leider nicht
this.em.remove(ref);
}
}
Java:
public class Facade {
@Inject
private BaseService<Customer> service;
public void deleteSelected(Customer c) {
service.delete(c, c.getId());
}
}