public String ulozKomentar() {
         em = emf.createEntityManager();
         em.getTransaction().begin();
         em.refresh(clanek);
         clanek.getKomentareCollection().add(newKomentar);
         newKomentar.setIdclanek(clanek);
         em.flush();
         em.getTransaction().commit();
         em.close();
         newKomentar = new Komentare();
         return "";
}

ten flush je zbytecny, pokud je flush mode spjaty s transakci.

> 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 */
>



-- 
S pozdravem Roman "Dagi" Pichlik

/* http://www.sweb.cz/pichlik/ Blog pro kodery */

Odpovedet emailem