Powiedzmy że mam sobie takie encje:
@Entity
class User {
@Id
private int id;
@OneToMany
private Collection<Bot> bots;
// ... set'ery i get'ery
public void addBot(Bot b) { bots.add(b); }
}
@Entity
class Bot {
@Id
private int id;
@ManyToOne
private User owner;
// ... set'ery i get'ery
}
I takiego oto bean'a to wysyłki tego to zdalnego klienta:
@Statless
class UsersDao implements Users {
public User find(String id) {
//...
return user;
}
I w zdalnym kliencie używam tego bean'a tak:
class Client {
@EJB
private UsersDao users;
public void work() {
User u = users.find("id");
u.add(new Bot("bot info")); // i tu dosteje wyjątek
}
}
Dostaje wyjątek związany z JPA że nie można uaktualnić bazy danych. Kiedy ja nie chce żeby uaktualniać bazy danych a tylko samego bean'a bez odzwierciedlenia tej modyfikacji w bazie. Gdybam że klasa dostarczona jako implementacja Collection<Bot> dba o aktualizację bd.
I tu pytanie czy w JPA jest jakaś standardowa funkcja która upraszcza kolekcje tak żeby traciły powiązanie z bazą danych?
Chodzi mi o taką funkcję która by przekształciła kolekcję bean'a oraz kolekcję wszystkich bean'ów zawartych w tym bean'nie. W sumie mógłbym to napisać samemu przy pomocy refleksji ale mam taką cichą nadzieje że to jest w standardzie albo przynajmniej w Hibernate'cie, który akurat implementuje mój JPA.