zaczynajac od poczatku mam dwa entity GenObject i GenObjectCnf
polaczone one-to-many gdzie w GenObject
@OrderBy
@OneToMany(cascade = CascadeType.ALL, mappedBy = "objects", fetch =
FetchType.LAZY)
private List<GenObjectCfg> objectsCfgSet = new ArrayList<GenObjectCfg>
();
1.tworze obiekt GenObject i zachowuje go w bazie. tworze nową
instancje GenObjectCnf i przekazuje referencje wczesniej utworzonego
obiektu GenObject i nastepnie go zapisuje do bazy. wszystko jest ok,
dane sa zachowane, transakcja sie konczy, obiekty sa odczepione od
sesji.
2.teraz problem jest taki ze (ponownie wybrany np z interfacu) obiekt
GenObject nie wie o utworzonym pozniej GenObjectCnf poniewaz nie
przypisalem mu tej referencji. tak wiec w kolejnej transakcji chciałem
zmergowac ten obiekt aby hibernate dociągnął potrzebne dane
this.em.merge(object);
GenObjectCfg parentCfg = object.getObjectsCfgSet().get(0);
niestety kolekcja jest pusta.
NATOMIAST kiedy wywołam
GenObject go = this.em.find(GenObject.class, object.getIdObject());
GenObjectCfg parentCfg = go.getObjectsCfgSet().get(0);
poprzednio utowrzony obiekt GenObjectCfg zostanie dociagniety tak jak
sie tego spodziewałem przy operacji merge.
tak wiec moje ogromne pytanie brzmi co robie zle i czego nie jeszcze
nie rozumiem?????????
spr�buj refresh zamiast merge
--
Pozdrawiam
Mateusz
http://na-jawie.blogspot.com
dzieki, doszedlem do tego.