kod te metody je nasledovny:
public String ulozKomentar() {
em = emf.createEntityManager();
em.merge(clanek);
em.refresh(clanek);
em.getTransaction().begin();
clanek.getKomentareCollection().add(newKomentar);
newKomentar.setIdclanek(clanek);
em.flush();
em.getTransaction().commit();
em.close();
newKomentar = new Komentare();
return "";
}
Problem ale je, ze em.merge(clanek) nejak asi nefunguje korektne protoze
to vyhazuje vyjimku:
java.lang.IllegalArgumentException: Can not refresh not managed object:
nastenka.entity.Clanky[idclanek=2].
oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.refresh(EntityManagerImpl.java:381)
nastenka.NastenkaBean.ulozKomentar(NastenkaBean.java:80)
Pokud ale kod prepisu tak, ze EntityManager necham porad otevreny, tak vse
funguje jak ma. Proto si myslim, ze problem bude v tom jak pripojit Clanek
zpet do persistentniho kontextu.
[EMAIL PROTECTED] wrote on 03.06.2008 10:10:29:
> > v podstate jde o to, jestli metoda ulozKomentar() pouziva spravny
postup jak
> > pridat a ulozit zaznam do kolekce List<Komentare> komentareCollection
v
> > instanci (Clanky) clanek
>
> bez kodu te metody tezko rici, kazdopadne to vypada podle popisu, ze
> ten objekt Clanek je odpojeny od persistentniho kontextu. Takze zkuste
> pred tim, nez vlozite ten komentar, zavolat
>
> em.refresh(clanek);
> clanek.getKomentareCollection().add(newKomentar);
> newKomentar.setClanek(clanek);
> em.flush();
>
> to by melo fungovat
>
> > jj toto pouzivam, jen jsem myslel, jestli by to JPA neumelo nejak
> "automaticky"
>
> neznam JPA, ale v Hibernatu se to ridi atributem inverse, ktery urcuje
> toho kdo ridi relaci, jestli strana one a nebo strana many. Elegantni
> reseni je to mit osetrene na urovni domenoveho modelu, aby se clovek
> nemusel podrizovat tomu, ze ve spodu je nejaky ORM framework.
>
> public class Clanek {
> public void addComment(Komentar comment) {
> getKomentareCollection().add(comment);
> comment.setClanek(this);
> }
>
> .....
> }
>
> --
> S pozdravem Roman "Dagi" Pichlik
>
> /* http://www.sweb.cz/pichlik/ Blog pro kodery */