org.hibernate.query.Query.setLockOptions()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(12.0k)|赞(0)|评价(0)|浏览(195)

本文整理了Java中org.hibernate.query.Query.setLockOptions方法的一些代码示例,展示了Query.setLockOptions的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.setLockOptions方法的具体详情如下:
包路径:org.hibernate.query.Query
类名称:Query
方法名:setLockOptions

Query.setLockOptions介绍

[英]Set the lock options for the query. Specifically only the following are taken into consideration:

  1. LockOptions#getLockMode()
  2. LockOptions#getScope()
  3. LockOptions#getTimeOut()
    For alias-specific locking, use #setLockMode(String,LockMode).
    [中]设置查询的锁定选项。具体而言,仅考虑以下因素:
    1.锁定选项#getLockMode()
    1.锁定选项#getScope()
    1.锁定选项#getTimeOut()
    对于特定于别名的锁定,请使用#setLockMode(字符串,LockMode)。

代码示例

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testQueryUsingLockOptions() {
  3. // todo : need an association here to make sure the alias-specific lock modes are applied correctly
  4. doInHibernate( this::sessionFactory, session -> {
  5. session.createQuery( "from A a" )
  6. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  7. .uniqueResult();
  8. session.createQuery( "from A a" )
  9. .setLockOptions( new LockOptions().setAliasSpecificLockMode( "a", LockMode.PESSIMISTIC_WRITE ) )
  10. .uniqueResult();
  11. } );
  12. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithUnionThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Vehicle> vehicles = session.createQuery( "select v from Vehicle v" )
  7. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  8. .getResultList();
  9. assertEquals( 3, vehicles.size() );
  10. assertEquals( 4, sqlStatementInterceptor.getSqlQueries().size() );
  11. session.getTransaction().commit();
  12. session.close();
  13. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Override
  2. protected void applySkipLocked(Query query) {
  3. query.setLockOptions(
  4. new LockOptions( lockMode() ).setFollowOnLocking( false )
  5. );
  6. }

代码示例来源:origin: hibernate/hibernate-orm

  1. protected void applySkipLocked(Query query) {
  2. query.setLockOptions(
  3. new LockOptions( lockMode() )
  4. .setTimeOut( LockOptions.SKIP_LOCKED )
  5. );
  6. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithCountDistinctThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products = session.createQuery(
  7. "select p from Product p where ( select count(distinct p1.id) from Product p1 ) > 0 ", Product.class )
  8. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ).setFollowOnLocking( false ) )
  9. .getResultList();
  10. assertEquals( 50, products.size() );
  11. assertEquals( 1, sqlStatementInterceptor.getSqlQueries().size() );
  12. session.getTransaction().commit();
  13. session.close();
  14. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithGroupByThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Object[]> products =
  7. session.createQuery(
  8. "select count(p), p " +
  9. "from Product p " +
  10. "group by p.id, p.name " )
  11. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  12. .getResultList();
  13. assertEquals( 50, products.size() );
  14. assertEquals( 51, sqlStatementInterceptor.getSqlQueries().size() );
  15. session.getTransaction().commit();
  16. session.close();
  17. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithDistinctThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select distinct p from Product p",
  9. Product.class
  10. )
  11. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  12. .getResultList();
  13. assertEquals( 50, products.size() );
  14. assertEquals( 51, sqlStatementInterceptor.getSqlQueries().size() );
  15. session.getTransaction().commit();
  16. session.close();
  17. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithMaxResultsThenNoFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select p from Product p", Product.class )
  9. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  10. .setMaxResults( 10 )
  11. .getResultList();
  12. assertEquals( 10, products.size() );
  13. assertEquals( 1, sqlStatementInterceptor.getSqlQueries().size() );
  14. session.getTransaction().commit();
  15. session.close();
  16. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithMaxResultsAndOrderByThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select p from Product p order by p.id", Product.class )
  9. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  10. .setMaxResults( 10 )
  11. .getResultList();
  12. assertEquals( 10, products.size() );
  13. assertEquals( 11, sqlStatementInterceptor.getSqlQueries().size() );
  14. session.getTransaction().commit();
  15. session.close();
  16. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithGroupByWhileExplicitlyEnablingFollowOnLockingThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Object[]> products =
  7. session.createQuery(
  8. "select count(p), p " +
  9. "from Product p " +
  10. "group by p.id, p.name " )
  11. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  12. .setFollowOnLocking( true ) )
  13. .getResultList();
  14. assertEquals( 50, products.size() );
  15. assertEquals( 51, sqlStatementInterceptor.getSqlQueries().size() );
  16. session.getTransaction().commit();
  17. session.close();
  18. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithFirstResultsThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select p from Product p", Product.class )
  9. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ) )
  10. .setFirstResult( 40 )
  11. .setMaxResults( 10 )
  12. .getResultList();
  13. assertEquals( 10, products.size() );
  14. assertEquals( 11, sqlStatementInterceptor.getSqlQueries().size() );
  15. session.getTransaction().commit();
  16. session.close();
  17. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithMaxResultsAndOrderByWhileExplicitlyEnablingFollowOnLockingThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select p from Product p order by p.id", Product.class )
  9. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  10. .setFollowOnLocking( true ) )
  11. .setMaxResults( 10 )
  12. .getResultList();
  13. assertEquals( 10, products.size() );
  14. assertEquals( 11, sqlStatementInterceptor.getSqlQueries().size() );
  15. session.getTransaction().commit();
  16. session.close();
  17. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithDistinctWhileExplicitlyEnablingFollowOnLockingThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select distinct p from Product p where p.id > 40" )
  9. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  10. .setFollowOnLocking( true ) )
  11. .setMaxResults( 10 )
  12. .getResultList();
  13. assertEquals( 10, products.size() );
  14. assertEquals( 11, sqlStatementInterceptor.getSqlQueries().size() );
  15. session.getTransaction().commit();
  16. session.close();
  17. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. @RequiresDialect({ Oracle8iDialect.class, PostgreSQL81Dialect.class,
  3. SQLServer2005Dialect.class } )
  4. public void testNoWait()
  5. throws NoSuchFieldException, IllegalAccessException {
  6. Session session = sessionFactory().openSession();
  7. session.beginTransaction();
  8. try {
  9. session.createQuery(
  10. "select a from A a", A.class )
  11. .unwrap( org.hibernate.query.Query.class )
  12. .setLockOptions(
  13. new LockOptions( LockMode.PESSIMISTIC_WRITE )
  14. .setTimeOut( LockOptions.NO_WAIT ) )
  15. .list();
  16. String lockingQuery = sqlStatementInterceptor.getSqlQueries().getLast();
  17. assertTrue( lockingQuery.toLowerCase().contains( "nowait") );
  18. }
  19. finally {
  20. session.getTransaction().commit();
  21. session.close();
  22. }
  23. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithFirstResultsWhileExplicitlyEnablingFollowOnLockingThenFollowOnLocking() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. List<Product> products =
  7. session.createQuery(
  8. "select p from Product p", Product.class )
  9. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  10. .setFollowOnLocking( true ) )
  11. .setFirstResult( 40 )
  12. .setMaxResults( 10 )
  13. .getResultList();
  14. assertEquals( 10, products.size() );
  15. assertEquals( 11, sqlStatementInterceptor.getSqlQueries().size() );
  16. session.getTransaction().commit();
  17. session.close();
  18. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithUnionWhileExplicitlyDisablingFollowOnLockingThenFails() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. try {
  7. List<Vehicle> vehicles = session.createQuery( "select v from Vehicle v" )
  8. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE ).setFollowOnLocking( false ) )
  9. .getResultList();
  10. fail( "Should throw exception since Oracle does not support UNION if follow on locking is disabled" );
  11. }
  12. catch ( PersistenceException expected ) {
  13. assertEquals(
  14. SQLGrammarException.class,
  15. expected.getCause().getClass()
  16. );
  17. }
  18. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithDistinctWhileExplicitlyDisablingFollowOnLockingThenFails() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. try {
  7. List<Product> products =
  8. session.createQuery(
  9. "select distinct p from Product p where p.id > 40",
  10. Product.class
  11. )
  12. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  13. .setFollowOnLocking( false ) )
  14. .getResultList();
  15. fail( "Should throw exception since Oracle does not support DISTINCT if follow on locking is disabled" );
  16. }
  17. catch ( PersistenceException expected ) {
  18. assertEquals(
  19. SQLGrammarException.class,
  20. expected.getCause().getClass()
  21. );
  22. }
  23. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithGroupByWhileExplicitlyDisablingFollowOnLockingThenFails() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. try {
  7. List<Object[]> products =
  8. session.createQuery(
  9. "select count(p), p " +
  10. "from Product p " +
  11. "group by p.id, p.name " )
  12. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  13. .setFollowOnLocking( false ) )
  14. .getResultList();
  15. fail( "Should throw exception since Oracle does not support GROUP BY if follow on locking is disabled" );
  16. }
  17. catch ( PersistenceException expected ) {
  18. assertEquals(
  19. SQLGrammarException.class,
  20. expected.getCause().getClass()
  21. );
  22. }
  23. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithMaxResultsAndOrderByWhileExplicitlyDisablingFollowOnLockingThenFails() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. try {
  7. List<Product> products =
  8. session.createQuery(
  9. "select p from Product p order by p.id",
  10. Product.class
  11. )
  12. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  13. .setFollowOnLocking( false ) )
  14. .setMaxResults( 10 )
  15. .getResultList();
  16. fail( "Should throw exception since Oracle does not support ORDER BY if follow on locking is disabled" );
  17. }
  18. catch ( PersistenceException expected ) {
  19. assertEquals(
  20. SQLGrammarException.class,
  21. expected.getCause().getClass()
  22. );
  23. }
  24. }

代码示例来源:origin: hibernate/hibernate-orm

  1. @Test
  2. public void testPessimisticLockWithFirstResultsWhileExplicitlyDisablingFollowOnLockingThenFails() {
  3. final Session session = openSession();
  4. session.beginTransaction();
  5. sqlStatementInterceptor.getSqlQueries().clear();
  6. try {
  7. List<Product> products =
  8. session.createQuery(
  9. "select p from Product p", Product.class )
  10. .setLockOptions( new LockOptions( LockMode.PESSIMISTIC_WRITE )
  11. .setFollowOnLocking( false ) )
  12. .setFirstResult( 40 )
  13. .setMaxResults( 10 )
  14. .getResultList();
  15. fail( "Should throw exception since Oracle does not support ORDER BY if follow on locking is disabled" );
  16. }
  17. catch ( PersistenceException expected ) {
  18. assertEquals(
  19. SQLGrammarException.class,
  20. expected.getCause().getClass()
  21. );
  22. }
  23. }

相关文章