dakujem vsetkym za namety a pripomienky.

Ivan

2010/3/4 Lukas Barton <lu...@cnawr.cz>

> Asi nikdy neporovnavate objekty vytvorene pres konstruktor a ziskane napr.
> pomoci session.load.
>
> Zkuste napr. nasledujici kod:
>
>
>        Session session=HibernateUtil.getSessionFactory().openSession();
>
>        session.beginTransaction();
>
>
>        Event theEvent1 = new Event();
>        theEvent1.setTitle("Test title");
>        theEvent1.setDate(new Date());
>
>
>        Serializable eventId=session.save(theEvent1);
>
>        session.getTransaction().commit();
>        session.close();
>
>
>        session=HibernateUtil.getSessionFactory().openSession();
>
>        session.beginTransaction();
>
>        Event theEvent2 = (Event) session.load(Event.class,eventId);
>
>
>        System.out.println(EqualsBuilder.reflectionEquals(theEvent1,
> theEvent2));  // false
>
>        session.getTransaction().commit();
>        session.close();
>
>
> EqualsBuilder se pokusi porovnat vsechny fieldy na te proxy, tj. v mem
> pripade:
>
> [public static javassist.util.proxy.MethodHandler
> org.hibernate.tutorial.domain.Event_$$_javassist_0.default_interceptor,
> private javassist.util.proxy.MethodHandler
> org.hibernate.tutorial.domain.Event_$$_javassist_0.handler, public static
> javassist.util.proxy.MethodFilter
> org.hibernate.tutorial.domain.Event_$$_javassist_0._method_filter, private
> static java.lang.reflect.Method[]
> org.hibernate.tutorial.domain.Event_$$_javassist_0._methods_]
>
> Coz samozrejme pres new vytvoreny Event nema a vrati tedy false.
>
>
> Stejne tak to nebude chodit, kdyz budete mit IDcko instance assigned
> HIbernatem, ale zaroven budete mit business key slozenych z nejakych
> poli....
>
> Jeden z moznych postupu je pouzit instaceOf a az pak EqualsBuilder - staci
> na primarni klic.
>
> Vice info viz treba: https://www.hibernate.org/109.html a
> http://www.jroller.com/sjivan/entry/intellij_generated_equals_breaks_hibernate
>
>
>   Lukas
>
> 2010/3/4 Rastislav Siekel <sie...@prosoft.sk>
>
>  Vyzerá to, že máte pravdu :-(
>>
>> Tak ten komentár že sa to "prekastuje na spoločného predka" odvolávam.
>> Ale že to s Hibernate chodí, je stále pravda :-)
>>
>> Rastislav "Bedo" Siekel
>>
>>
>> -------- Original Message --------  Subject: Re: hibernate hashCide a
>> equals  Date: Thu, 4 Mar 2010 10:23:45 +0100  From: Zdenek Tronicek
>> <troni...@fit.cvut.cz> <troni...@fit.cvut.cz>  Reply-To: Java
>> <konference@java.cz> <konference@java.cz>  To: Java 
>> <konference@java.cz><konference@java.cz>
>>
>>
>> Takze kdyz lhs je Object a rhs je String, tak lhsClass bude Object.class a
>> rhsClass bude String.class.
>> lhsClass.isInstance(rhs) vrati true (tedy testClass = Object.class) a
>> !rhsClass.isInstance(lhs) je take true, tedy testClass = String.class.
>>
>> To nejak neodpovida tomu, ze se "to prekastuje na spoločného predka".
>>
>> Z.T.
>> --
>> Zdenek Tronicek
>> FIT CTU in Prague
>>
>>
>> Rastislav Siekel napsal(a):
>> > Veď preto tam ten Commons-Lang dáva takéto niečo:
>> >
>> > ...
>> >          Class lhsClass = lhs.getClass();
>> >          Class rhsClass = rhs.getClass();
>> >          Class testClass;
>> >          if (lhsClass.isInstance(rhs)) {
>> >              testClass = lhsClass;
>> >              if (!rhsClass.isInstance(lhs)) {
>> >                  // rhsClass is a subclass of lhsClass
>> >                  testClass = rhsClass;
>> >              }
>> >          } else if (rhsClass.isInstance(lhs)) {
>> >              testClass = rhsClass;
>> >              if (!lhsClass.isInstance(rhs)) {
>> >                  // lhsClass is a subclass of rhsClass
>> >                  testClass = lhsClass;
>> >              }
>> >          } else {
>> >              // The two classes are not related.
>> >              return false;
>> >          }
>> > ...
>> >
>> > Čiže si to prekastuje na spoločného predka a až potom porovnáva.
>> > Pravdupovediac som to moc neštudoval, po otestovaní s Hiberanate som
>> > zistil, že všetko beží ako má a odvtedy to "len" používam :-)
>> >
>> > R.
>> >
>> > ------------------------------------------------------------------------
>> > Ing. Rastislav Siekel
>> > Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
>> > E-mail : <sie...@prosoft.sk> <sie...@prosoft.sk> 
>> > <mailto:sie...@prosoft.sk> <sie...@prosoft.sk>
>> > Tel : 041/562 54 91
>> > Fax : 041/562 54 97
>> > Mobil : 0905 34 00 20
>> >
>> > On 4. 3. 2010 9:43, Lukas Barton wrote:
>> >> Jenom pozor, ze je v equals metode nutne pouzivat instanceof misto
>> >> getClass()==.
>> >> Hibernate tam totiz dava proxy a pak by to nefungovalo.
>> >>
>> >>   Lukas
>> >>
>> >> Rastislav Siekel wrote:
>> >>> Jakrta Commons-Lang a zatiaľ ma nesklamali.
>> >>>
>> >>> Rastislav "Bedo" Siekel
>> >>>
>> >>> ------------------------------------------------------------------------
>> >>> Ing. Rastislav Siekel
>> >>> Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
>> >>> E-mail : <sie...@prosoft.sk> <sie...@prosoft.sk> 
>> >>> <mailto:sie...@prosoft.sk> <sie...@prosoft.sk>
>> >>> Tel : 041/562 54 91
>> >>> Fax : 041/562 54 97
>> >>> Mobil : 0905 34 00 20
>> >>>
>> >>> On 4. 3. 2010 6:54, Daniel Holešínský wrote:
>> >>>> Zdravim,
>> >>>>
>> >>>> pouzivam generator IDE (eclipse, idea). U Hibernate si ale musite
>> >>>> dat pozor na kolekce s atributem lazy - mimo session se jinak
>> >>>> potkate s vyjimkou
>> >>>>
>> >>>> org.hibernate.LazyInitializationException: failed to lazily
>> >>>> initialize a collection of role: ____, no session or session was
>> >>>> closed
>> >>>>
>> >>>> z pri jakemkoliv pouziti eaual a hashCode (za predpokladu, ze tato
>> >>>> kolekce je zahrnuta do vypoctu hashCode a vyhodnoceni equals)
>> >>>>
>> >>>> DH
>> >>>>
>> >>>> 2010/3/3 Ivan Polak <ivan.po...@f4s.sk <mailto:ivan.po...@f4s.sk> 
>> >>>> <ivan.po...@f4s.sk>>
>> >>>>
>> >>>>     Ahojte,
>> >>>>
>> >>>>     mam otazku, co pouzivate na generovanie tychto 2 metod pre domain
>> >>>>     objecty v hibernate ? eclipse generovanie (Source/Generate
>> >>>>     hashCode()
>> >>>>     and equals() alebo pouzitie EqualsBuilder a HashCodeBuilder z
>> >>>>     projektu
>> >>>>     Jakarta Commons-Lang (http://
>> >>>>     commons.apache.org/lang/ <http://commons.apache.org/lang/> 
>> >>>> <http://commons.apache.org/lang/> alebo
>> >>>>     nieco ine?
>> >>>>
>> >>>>     dakujem
>> >>>>
>> >>>>     Ivan
>> >>>>
>> >>>>
>> >>
>> >
>>
>>
>>
>

Odpovedet emailem