|
32 | 32 | import javax.persistence.Query;
|
33 | 33 | import javax.persistence.Table;
|
34 | 34 |
|
| 35 | +import org.hibernate.testing.TestForIssue; |
35 | 36 | import org.junit.Test;
|
36 | 37 |
|
37 | 38 | import org.hibernate.LockMode;
|
@@ -89,6 +90,39 @@ public void testOverallLockMode() {
|
89 | 90 | em.close();
|
90 | 91 | }
|
91 | 92 |
|
| 93 | + @Test |
| 94 | + @TestForIssue( jiraKey = "HHH-8756" ) |
| 95 | + public void testLockModeSetToNoneForNonSelectQueryShouldBeAllowed() { |
| 96 | + EntityManager em = getOrCreateEntityManager(); |
| 97 | + em.getTransaction().begin(); |
| 98 | + QueryImpl jpaQuery = em.createQuery( "delete from Lockable l" ).unwrap( QueryImpl.class ); |
| 99 | + |
| 100 | + org.hibernate.internal.QueryImpl hqlQuery = (org.hibernate.internal.QueryImpl) jpaQuery.getHibernateQuery(); |
| 101 | + assertEquals( LockMode.NONE, hqlQuery.getLockOptions().getLockMode() ); |
| 102 | + |
| 103 | + jpaQuery.setLockMode( LockModeType.NONE ); |
| 104 | + |
| 105 | + em.getTransaction().commit(); |
| 106 | + em.close(); |
| 107 | + } |
| 108 | + |
| 109 | + @Test( expected = IllegalStateException.class ) |
| 110 | + @TestForIssue( jiraKey = "HHH-8756" ) |
| 111 | + public void testLockModeSetToValueOtherThanNoneForNonSelectQueryIsNotAllowed() { |
| 112 | + EntityManager em = getOrCreateEntityManager(); |
| 113 | + em.getTransaction().begin(); |
| 114 | + QueryImpl jpaQuery = em.createQuery( "delete from Lockable l" ).unwrap( QueryImpl.class ); |
| 115 | + |
| 116 | + org.hibernate.internal.QueryImpl hqlQuery = (org.hibernate.internal.QueryImpl) jpaQuery.getHibernateQuery(); |
| 117 | + assertEquals( LockMode.NONE, hqlQuery.getLockOptions().getLockMode() ); |
| 118 | + |
| 119 | + // Throws IllegalStateException |
| 120 | + jpaQuery.setLockMode( LockModeType.PESSIMISTIC_WRITE ); |
| 121 | + |
| 122 | + em.getTransaction().commit(); |
| 123 | + em.close(); |
| 124 | + } |
| 125 | + |
92 | 126 | @Test
|
93 | 127 | public void testNativeSql() {
|
94 | 128 | EntityManager em = getOrCreateEntityManager();
|
|
0 commit comments