package org.ovirt.engine.core.dao.events; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import org.ovirt.engine.core.common.businessentities.event_subscriber; import org.ovirt.engine.core.common.businessentities.event_subscriber_id; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.BaseDAOHibernateImpl; public class SubscriberDAOHibernateImpl extends BaseDAOHibernateImpl<event_subscriber, event_subscriber_id> { public SubscriberDAOHibernateImpl() { super(event_subscriber.class); } public List<event_subscriber> getAllForSubscriber(Guid id) { return findByCriteria(Restrictions.eq("id.subscriberId", id)); } public void update(event_subscriber subscriber, int oldMethodId) { /* * for some odd reason doing a simple update on an event_subscriber object doesn't update the object, so an * explicit HQL update is necessary */ Session session = getSession(); Transaction transaction = session.beginTransaction(); Query query = session.createQuery("update event_subscriber es " + "set es.id.methodId = :method_id " + "where es.id.eventUpName = :event_up_name " + "and es.id.methodId = :old_method_id " + "and es.id.subscriberId = :subscriber_id"); query.setParameter("method_id", subscriber.getmethod_id()); query.setParameter("event_up_name", subscriber.getevent_up_name()); query.setParameter("old_method_id", oldMethodId); query.setParameter("subscriber_id", subscriber.getsubscriber_id()); query.executeUpdate(); transaction.commit(); } }