diff --git a/src/main/java/com/avaje/ebean/config/ServerConfig.java b/src/main/java/com/avaje/ebean/config/ServerConfig.java index 6954ff4f0..c57336b07 100644 --- a/src/main/java/com/avaje/ebean/config/ServerConfig.java +++ b/src/main/java/com/avaje/ebean/config/ServerConfig.java @@ -1828,4 +1828,16 @@ public class ServerConfig { } return hitList; } + + /** + * Return the PersistBatch mode to use for 'batchOnCascade' taking into account if the database + * platform supports getGeneratedKeys in batch mode. + *

+ * Used to effectively turn off batchOnCascade for SQL Server - still allows explicit batch mode. + *

+ */ + public PersistBatch appliedPersistBatchOnCascade() { + + return databasePlatform.isDisallowBatchOnCascade() ? PersistBatch.NONE : persistBatchOnCascade; + } } diff --git a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java index 43e111b7e..7680704b2 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java +++ b/src/main/java/com/avaje/ebeaninternal/server/transaction/TransactionManager.java @@ -106,7 +106,7 @@ public class TransactionManager { BeanDescriptorManager descMgr, BootupClasses bootupClasses) { this.persistBatch = config.getPersistBatch(); - this.persistBatchOnCascade = config.getPersistBatchOnCascade(); + this.persistBatchOnCascade = config.appliedPersistBatchOnCascade(); this.beanDescriptorManager = descMgr; this.clusterManager = clusterManager; this.serverName = config.getName();