Hibernate zhusta používá knihovnu CGLIB, která slouží ke generování tříd za běhu programu. Místo vašich vlastních objektů tak Hibernate občas vrátí tento za běhu vygenerovaný proxy objekt.
Problém může nastat, pokud v metodě equals() příslušného objektu použijeme porovnání tříd jako například v metodě, kterou vytváří Eclipse:
if (getClass() == obj.getClass()) ...V případě proxy objektu, který původní objekt rozšiřuje, tato podmínka neplatí a metoda equals() pak nefunguje.
Staré dobré if (obj instanceof Třída) ... funguje samozřejmě bez problémů.
Žádné komentáře:
Okomentovat