[ casperns2 @ 29.10.2014. 18:35 ] @
Pozdrav,

Imam problem sa cuvanjem podataka kod relacije ManyToMany . Kada cuvam objekte, ako ne postoje u bazi , sve prodje Ok, sacuvaju se objekti na obe strane i ubace se IDkljucevi u trecu tabelu.

Problem je kada uzmem neki objekat iz baze, izmenim ga i pokusam opet sacuvati. Javi mi se greska org.hibernate.PersistentObjectException detached entity passed to persist: Player

Koliko sam video treba da upotrebim persist metodu za objekte koji su vec sacuvani , da li treba da stavljam anotacije za PersistenceContext ili neke druge, gde se upotrebljava persist ??? Ako ima neko iskustva ili zna gde je problem , prvi put se susrecem sa ovom greskom???

Evo i kodova za relaciju

Code:

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(name = "result_player", 
                joinColumns = { @JoinColumn(name = "result_id", nullable = true) }, 
                inverseJoinColumns = { @JoinColumn(name = "player_id",    nullable = true) })
    private List<Player> players;


Code:

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL,mappedBy="players")
    private List<Result> results;
[ casperns2 @ 31.10.2014. 13:38 ] @
Gledao sam po netu i otprilike znam sta treba da uradim ,pre nego sto objekat sacuvam u bazu trebam da na njemu izvrsim persist ili merge metodu da bi kasnije mogao da se menja kroz relacije.

Otprilike nesto ovako trebam da uradim:

Code:
@PersistenceContext private EntityManager em;

    public Player storePlayer(Player p) {
    p = em.merge(p);
        em.persist(p);
        return p;
    }


i pre cuvanja u bazu bi pozivao objekat ...

Code:
 @Override
    public Player save(Player player) {
        player=player.storePlayer(player);
        return playerRepository.save(player);
    }


problem je sada sto kada dodam @PersistenceContext private EntityManager em; iostali deo koda javlja mi gdesku da ne moze da se napravi bean entetyManager , greska koju obicno dobijam kada nisu neka podesavanja uradjena , neka anotacija ili u application-context.xml konfiguracionom fajlu ako nesto nije dobro ali sve sam proverio i podesavanja za bean entetyMenager i probao da kombinujem sve sto sam nasao na netu ali uvek ista greska. Cim izbrisem tih par linija koda vezanim za Persistence, sve radi osim situacije kada se opet upotrebljava vec sacuvani objekat u relacji ...

na primer ovo radi...

Code:
List<Player>players=new ArayList<>();
    Player pl = new Player();
    pl.setName("someName");
    players.add(pl);
    Result r = new Result();
    r.setPlayers(players);
    r.save();


sacuva se rezulat, sacuva se player i result_player tabela

Ako uradim nesto ovako, samo povucem Player iz baze bez da ga menjam i dodelim novom rezultatu koji pokusam sacuvati onda javlja gresku ... org.hibernate.PersistentObjectException detached entity passed to persist: Player

Code:
List<Player>players=new ArayList<>();
    Player pl = playerService.findOne(1);
    players.add(pl);
    Result r = new Result();
    r.setPlayers(players);
    r.save();


Gre gresim ???????

Ako ima neko bilo kakav zadatak gde se koristi persist da mi posalje porukom ili ovde da postavi, kako bih video sva podesavanja. Ono sto sam nasao po netu nije mi pomoglo ... bilo kakva sugestija je dobrodosla....