JPA upraszczanie encji do wysyłki

0

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.

0

Możesz napisać, jaki to wyjątek wyrzuca? Niestety nie pomogę za bardzo w rozwiązaniu problemu ale chodzi mi o to, że mam podobny problem, tylko, że w moim przypadku pożądane byłoby zapisanie zmian w bazie danych. Jak dla mnie to nie powinien się pojawić żaden wyjątek. W momencie pobrania obiektu User staje się on zarządzany przez kontekst trwały (? tak się chyba to mówi) i każda zmiana powinna być rozpropagowana w bazie danych.

0

Coś związanego z tym że nie może utrwalić obiektu. Dokładny wyjątek dodam później ale za pewne powoduje go to że klient jest w kontekście innego presistance.xml niż serwer.

1 użytkowników online, w tym zalogowanych: 0, gości: 1