[hibernate] setovanje query parametra okida update
01.06.2009. u 13:23 · pre 211 meseci
#1
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 :
i, nešto kasnije,
Hibernate na konzolu ispiše po
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 ?
Konkretno, kod izgleda ovako :
Code:
String query = "select c from Contact c where mate = :mate";
Query qFriend = getSession().createQuery(query);
qFriend.setParameter("mate", user);
List<Contact> contactList = qFriend.list();
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,
Code:
Session session = (Session)currentSession.get();
session.flush();
session.getTransaction().commit();
Session session = (Session)currentSession.get();
session.flush();
session.getTransaction().commit();
Hibernate na konzolu ispiše po
Code:
Hibernate: update contact set ownerId=?, mateId=?, outsiderId=? where id=?
za svaki od recorda koje vrati gornji select, i taj kod setuje svaki mateId na null.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 ?
Potpis
it works on my machine