@Override public Query setLockOptions(LockOptions lockOptions) { return query.setLockOptions(lockOptions); }
public TypedQuery<T> setLockOptions(LockOptions lockOptions) { query.setLockOptions(lockOptions); return this; }
@Override public Query setLockOptions(final LockOptions lockOptions) { return query.setLockOptions(lockOptions); }
private <T extends PublishableEntity<T, ?, ?>> Iterable<T> getPFM(String queryName, Class<T> type) { final Query q = getNamedQuery(queryName).setLockOptions(LockOptions.UPGRADE); return list(type, q); }
@Test public void testPessimisticWrite() { LOGGER.info("Test lock contention"); doInJPA(entityManager -> { List<Post> pendingPosts = entityManager.createQuery( "select p " + "from Post p " + "where p.status = :status", Post.class) .setParameter("status", PostStatus.PENDING) .setMaxResults(5) //.setLockMode(LockModeType.PESSIMISTIC_WRITE) .unwrap(org.hibernate.Query.class) .setLockOptions(new LockOptions(LockMode.PESSIMISTIC_WRITE).setTimeOut(LockOptions.SKIP_LOCKED)) .list(); assertEquals(5, pendingPosts.size()); }); }
@Test @Ignore public void testUpgradeSkipLockedOrderByMaxResult() { LOGGER.info("Test lock contention"); doInJPA(entityManager -> { List<Post> pendingPosts = entityManager.createQuery( "select p " + "from Post p " + "where p.status = :status " + "order by p.id ", Post.class) .setParameter("status", PostStatus.PENDING) .setMaxResults(5) .unwrap(org.hibernate.Query.class) .setLockOptions(new LockOptions(LockMode.UPGRADE_SKIPLOCKED)) .list(); assertEquals(3, pendingPosts.size()); }); }
@Test public void testUpgradeSkipLocked() { LOGGER.info("Test lock contention"); doInJPA(entityManager -> { List<Post> pendingPosts = entityManager.createQuery( "select p " + "from Post p " + "where p.status = :status", Post.class) .setParameter("status", PostStatus.PENDING) .setFirstResult(2) .unwrap(org.hibernate.Query.class) .setLockOptions(new LockOptions(LockMode.UPGRADE_SKIPLOCKED)) .list(); assertEquals(3, pendingPosts.size()); }); }
@Test public void testUpgradeSkipLockedOrderBy() { LOGGER.info("Test lock contention"); doInJPA(entityManager -> { List<Post> pendingPosts = entityManager.createQuery( "select p " + "from Post p " + "where p.status = :status " + "order by p.id ", Post.class) .setParameter("status", PostStatus.PENDING) .setFirstResult(2) .unwrap(org.hibernate.Query.class) .setLockOptions(new LockOptions(LockMode.UPGRADE_SKIPLOCKED)) .list(); assertEquals(3, pendingPosts.size()); }); }