1
1
/*
2
- * Copyright 2002-2018 the original author or authors.
2
+ * Copyright 2002-2019 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
@@ -194,7 +194,8 @@ else if (isolationLevelNeeded) {
194
194
session .setDefaultReadOnly (true );
195
195
}
196
196
}
197
- return new SessionTransactionData (session , previousFlushMode , preparedCon , previousIsolationLevel );
197
+ return new SessionTransactionData (
198
+ session , previousFlushMode , preparedCon , previousIsolationLevel , definition .isReadOnly ());
198
199
}
199
200
200
201
@ Override
@@ -203,7 +204,7 @@ public Object prepareTransaction(EntityManager entityManager, boolean readOnly,
203
204
204
205
Session session = getSession (entityManager );
205
206
FlushMode previousFlushMode = prepareFlushMode (session , readOnly );
206
- return new SessionTransactionData (session , previousFlushMode , null , null );
207
+ return new SessionTransactionData (session , previousFlushMode , null , null , readOnly );
207
208
}
208
209
209
210
@ SuppressWarnings ("deprecation" )
@@ -370,13 +371,16 @@ private static class SessionTransactionData {
370
371
@ Nullable
371
372
private final Integer previousIsolationLevel ;
372
373
374
+ private final boolean readOnly ;
375
+
373
376
public SessionTransactionData (Session session , @ Nullable FlushMode previousFlushMode ,
374
- @ Nullable Connection preparedCon , @ Nullable Integer previousIsolationLevel ) {
377
+ @ Nullable Connection preparedCon , @ Nullable Integer previousIsolationLevel , boolean readOnly ) {
375
378
376
379
this .session = session ;
377
380
this .previousFlushMode = previousFlushMode ;
378
381
this .preparedCon = preparedCon ;
379
382
this .previousIsolationLevel = previousIsolationLevel ;
383
+ this .readOnly = readOnly ;
380
384
}
381
385
382
386
@ SuppressWarnings ("deprecation" )
@@ -392,7 +396,8 @@ public void resetSessionState() {
392
396
"make sure to use connection release mode ON_CLOSE (the default) and to run against " +
393
397
"Hibernate 4.2+ (or switch HibernateJpaDialect's prepareConnection flag to false" );
394
398
}
395
- DataSourceUtils .resetConnectionAfterTransaction (conToReset , this .previousIsolationLevel );
399
+ DataSourceUtils .resetConnectionAfterTransaction (
400
+ conToReset , this .previousIsolationLevel , this .readOnly );
396
401
}
397
402
}
398
403
}
0 commit comments