Aktualisieren der JPA-Entität mit Reflektion funktioniert nicht?
Ich habe eine Entität, die ungefähr so aussieht: (Ich programmiere auf der Webseite und entschuldige mich für etwaige Fehler.)
@Entity
public class Entity {
@Id
private Long id;
private String field;
// Insert getters and setters here...
}
Ich versuche es mit Reflektion zu manipulieren:
Long id = 1;
Entity entity = myDao.getEntity(id);
entity.setField("set directly");
Field[] fields = entity.getClass().getDeclaredFields();
for (Field f : fields) {
if (f.getName().equals("field")) {
f.setAccessible(true);
f.set(entity, "set using reflection");
f.setAccessible(false);
}
}
System.out.println(entity.getField());
Dieses Programm druckt "set using reflection". In der Datenbank wird der mit Reflection festgelegte Wert jedoch nicht aktualisiert:
SELECT * FROM ENTITY WHERE ID = 1
ID FIELD
1 set directly
Das ist merkwürdig. Ich könnte schwören, dass das früher funktioniert hat - aber jetzt ist es nicht mehr. Ist es wirklich so, dass Sie Entitäten nicht mit Reflektion manipulieren können?
Ich verwende EclipseLink 1.1.1, wenn das wichtig ist.