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