protected int shift(Class<T >clazz, long priorityStart, long offset) { if ( offset <= 0 ) { throw new IllegalArgumentException("Positive offset required"); } Search search = new Search(clazz); search.addFilterGreaterOrEqual("priority", priorityStart); search.addFilterLessThan("priority", priorityStart + offset); if ( super.count(search) == 0 ) { return -1; } String hql = "UPDATE "+clazz.getSimpleName()+" SET priority=priority+ :offset WHERE priority >= :priorityStart"; Query query = em().createQuery(hql); query.setParameter("offset", offset); query.setParameter("priorityStart", priorityStart); return query.executeUpdate(); }
search.addFilterLessThan(columnName, value);