Aktualizacja jednostki JPA z odbiciem nie działa?
Mam podmiot, który wygląda mniej więcej tak: (Koduję na stronie internetowej, więc przepraszam za wszelkie błędy)
@Entity
public class Entity {
@Id
private Long id;
private String field;
// Insert getters and setters here...
}
Staram się nim manipulować za pomocą refleksji:
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());
Ten program drukuje „ustaw za pomocą odbicia”. Jednak w bazie danych wartość ustawiona za pomocą odbicia nie jest aktualizowana:
SELECT * FROM ENTITY WHERE ID = 1
ID FIELD
1 set directly
To jest dziwne. Mógłbym przysiąc, że to kiedyś działało - ale teraz tak nie jest. Czy tak naprawdę nie można manipulować istotami za pomocą odbicia?
Używam EclipseLink 1.1.1, jeśli to ma znaczenie.