Imam jednostavan Query sa parametrom koji je entitet. Vrednost tog entiteta setujem pozivom setEntity (probao sam i setParameter). Upit se regularno okine i vrati očekivani resultSet, međutim, kasnije, pri flašovanju sesije okine se update nad bazom koji null-uje vrednosti jednake vrednosti parametra u tabeli iz upita (što mi naravno nije namera).
Konkretno, kod izgleda ovako :
String query = "select c from Contact c where mate = :mate";
Query qFriend = getSession().createQuery(query);
qFriend.setParameter("mate", user);
List<Contact> contactList = qFriend.list();
i, nešto kasnije,
Session session = (Session)currentSession.get();
session.flush();
session.getTransaction().commit();
Hibernate na konzolu ispiše po
Hibernate: update contact set ownerId=?, mateId=?, outsiderId=? where id=?
U specifikaciji na https://www.hibernate.org/hib_docs/v3/api/ vidim da metode setEntity i setParameter služe baš za to i ne pominju se nikakvi bočni efekti. Dakle, u čemu je ovde fazon ? Odnosno, kako se uopšte setuju vrednosti entitetskih parametara ?




[hibernate] setovanje query parametra okida update
