Hallo allerseits
Ich möchte eine generische Methode implementieren, die das Löschen der übergebenen Entity realisieren soll. Nachfolgend mein Code:
Was mich stört ist die Annotation:
Ich weiss schon, dass dies nicht "lebenswichtig" ist: es handelt sich um eine "unsichere" Typumwandlung (Zeile 19). Aber trotzdem: Könnte man den Code so ändern (anpassen etc.), dass diese Annotation nicht mehr benötigt wird bzw. dass diese "unsichere" Typumwandlung eliminiert wird? Im Bereich "Reflection" sind meine Kenntnisse leider sehr bescheiden
Danke.
Ich möchte eine generische Methode implementieren, die das Löschen der übergebenen Entity realisieren soll. Nachfolgend mein Code:
Java:
public <T> void delete(T object) throws Exception {
int id = 0;
Class<? extends Object> c = object.getClass();
Method m = c.getMethod("getId", new Class<?>[0]);
Integer value = (Integer) m.invoke(object, new Object[0]);
id = value.intValue();
final EntityManager em = Util.getEntityManagerFactory()
.createEntityManager();
boolean success = false;
try {
em.getTransaction().begin();
@SuppressWarnings("unchecked")
T temp = (T) em.find(c, id);
if (temp != null) {
em.remove(temp);
success = true;
}
} catch (Exception e) {
logger.error(
"Fehler beim Löschen des Objekts [" + object.toString()
+ "]" + ": ", e);
throw e;
} finally {
if (success) {
em.getTransaction().commit();
} else {
em.getTransaction().rollback();
}
if (em != null && em.isOpen()) {
em.close();
}
}
}
Was mich stört ist die Annotation:
Java:
@SuppressWarnings("unchecked")
Ich weiss schon, dass dies nicht "lebenswichtig" ist: es handelt sich um eine "unsichere" Typumwandlung (Zeile 19). Aber trotzdem: Könnte man den Code so ändern (anpassen etc.), dass diese Annotation nicht mehr benötigt wird bzw. dass diese "unsichere" Typumwandlung eliminiert wird? Im Bereich "Reflection" sind meine Kenntnisse leider sehr bescheiden
Danke.
Zuletzt bearbeitet: