Skip to content

Commit 9f0bbe1

Browse files
committed
HHH-7725 - Make handling multi-table bulk HQL operations more pluggable
1 parent c94752d commit 9f0bbe1

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

hibernate-core/src/main/java/org/hibernate/hql/spi/PersistentTableBulkIdStrategy.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.jboss.logging.Logger;
3737

3838
import org.hibernate.HibernateException;
39+
import org.hibernate.cfg.AvailableSettings;
3940
import org.hibernate.cfg.Mappings;
4041
import org.hibernate.dialect.Dialect;
4142
import org.hibernate.engine.jdbc.spi.JdbcConnectionAccess;
@@ -58,7 +59,11 @@ public class PersistentTableBulkIdStrategy implements MultiTableBulkIdStrategy {
5859
private static final Logger log = Logger.getLogger( PersistentTableBulkIdStrategy.class );
5960

6061
public static final String CLEAN_UP_ID_TABLES = "hibernate.hql.bulk_id_strategy.persistent.clean_up";
62+
public static final String SCHEMA = "hibernate.hql.bulk_id_strategy.persistent.schema";
63+
public static final String CATALOG = "hibernate.hql.bulk_id_strategy.persistent.catalog";
6164

65+
private String catalog;
66+
private String schema;
6267
private boolean cleanUpTables;
6368
private List<String> tableCleanUpDdl;
6469

@@ -69,7 +74,18 @@ public void prepare(
6974
Mappings mappings,
7075
Mapping mapping,
7176
Map settings) {
72-
cleanUpTables = ConfigurationHelper.getBoolean( CLEAN_UP_ID_TABLES, settings, false );
77+
this.catalog = ConfigurationHelper.getString(
78+
CATALOG,
79+
settings,
80+
ConfigurationHelper.getString( AvailableSettings.DEFAULT_CATALOG, settings )
81+
);
82+
this.schema = ConfigurationHelper.getString(
83+
SCHEMA,
84+
settings,
85+
ConfigurationHelper.getString( AvailableSettings.DEFAULT_SCHEMA, settings )
86+
);
87+
this.cleanUpTables = ConfigurationHelper.getBoolean( CLEAN_UP_ID_TABLES, settings, false );
88+
7389
final Iterator<PersistentClass> entityMappings = mappings.iterateClasses();
7490
final List<Table> idTableDefinitions = new ArrayList<Table>();
7591
while ( entityMappings.hasNext() ) {
@@ -82,6 +98,12 @@ public void prepare(
8298

8399
protected Table generateIdTableDefinition(PersistentClass entityMapping) {
84100
Table idTable = new Table( entityMapping.getTemporaryIdTableName() );
101+
if ( catalog != null ) {
102+
idTable.setCatalog( catalog );
103+
}
104+
if ( schema != null ) {
105+
idTable.setSchema( schema );
106+
}
85107
Iterator itr = entityMapping.getIdentityTable().getPrimaryKey().getColumnIterator();
86108
while( itr.hasNext() ) {
87109
Column column = (Column) itr.next();

0 commit comments

Comments
 (0)