@Override @SuppressWarnings("unchecked") public void doSet(Share share, ShareData data, List<ShareItem> items) { long oldOptLock = data.optlock; long newOptLock = oldOptLock + 1; Session session = session(); List<Share> list = (List<Share>) session.createQuery( "select s from Share s where s.id = " + data.id + " and s.version =" + data.optlock).list(); if (list.size() == 0) { throw new OptimisticLockException("Share " + data.id + " has been updated by someone else."); } data.optlock = newOptLock; share.setData(parse(data)); share.setActive(data.enabled); share.setItemCount((long) items.size()); share.setVersion((int) newOptLock); session.merge(share); synchronizeMembers(session, data); }