Skip to content

Commit bc6a184

Browse files
committed
Merge branch '2.1.x' into 2.2.x
Conflicts: grails-hibernate/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate/cfg/GrailsDomainBinder.java
2 parents d3e7476 + d19815b commit bc6a184

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

grails-hibernate/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate/cfg/GrailsDomainBinder.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1183,11 +1183,22 @@ private static void bindCollectionTable(GrailsDomainClassProperty property, Mapp
11831183
Collection collection, Table ownerTable, String sessionFactoryBeanName) {
11841184

11851185
String prefix = ownerTable.getSchema();
1186+
PropertyConfig config = getPropertyConfig(property);
1187+
JoinTable jt = config != null ? config.getJoinTable() : null;
11861188
NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName);
11871189
String tableName = (prefix == null ? "" : prefix + '.') + namingStrategy.tableName(calculateTableForMany(property, sessionFactoryBeanName));
1188-
1190+
String schemaName = mappings.getSchemaName();
1191+
String catalogName = mappings.getCatalogName();
1192+
if(jt != null) {
1193+
if(jt.getSchema() != null) {
1194+
schemaName = jt.getSchema();
1195+
}
1196+
if(jt.getCatalog() != null) {
1197+
catalogName = jt.getCatalog();
1198+
}
1199+
}
11891200
collection.setCollectionTable(mappings.addTable(
1190-
mappings.getSchemaName(), mappings.getCatalogName(),
1201+
schemaName, catalogName,
11911202
tableName, null, false));
11921203
}
11931204

grails-hibernate/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate/cfg/HibernateMappingBuilder.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,8 @@ class HibernateMappingBuilder {
483483
join.name = joinArgs
484484
}
485485
else if (joinArgs instanceof Map) {
486+
if (joinArgs.schema) join.schema = joinArgs.remove('schema')
487+
if (joinArgs.catalog) join.catalog = joinArgs.remove('catalog')
486488
if (joinArgs.name) join.name = joinArgs.remove('name')
487489
if (joinArgs.key) {
488490
join.key = new ColumnConfig(name:joinArgs.remove('key'))

grails-hibernate/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate/cfg/JoinTable.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ package org.codehaus.groovy.grails.orm.hibernate.cfg
99
*/
1010
class JoinTable {
1111
String name
12+
String catalog
13+
String schema
1214
ColumnConfig key
1315
ColumnConfig column
1416
}

grails-test-suite-persistence/src/test/groovy/org/codehaus/groovy/grails/orm/hibernate/HibernateMappingBuilderTests.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,13 +330,15 @@ class HibernateMappingBuilderTests extends GroovyTestCase {
330330

331331
mapping = builder.evaluate {
332332
columns {
333-
things joinTable:[name:'foo', key:'foo_id', column:'bar_id']
333+
things joinTable:[name:'foo', key:'foo_id', column:'bar_id', schema: 'foos', catalog: 'bars']
334334
}
335335
}
336336

337337
property = mapping.getPropertyConfig('things')
338338
assert property?.joinTable
339339
assertEquals "foo", property.joinTable.name
340+
assertEquals "foos", property.joinTable.schema
341+
assertEquals "bars", property.joinTable.catalog
340342
assertEquals "foo_id", property.joinTable.key.name
341343
assertEquals "bar_id", property.joinTable.column.name
342344
}

0 commit comments

Comments
 (0)