Skip to content

Commit f32e407

Browse files
jhoellerunknown
authored andcommitted
same-named unit from persistence.xml overrides in case of conflict with default unit
Issue: SPR-9741
1 parent 10a4e88 commit f32e407

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.lang.reflect.Method;
2222
import java.lang.reflect.Proxy;
2323
import java.net.URL;
24-
import java.util.Arrays;
2524
import java.util.HashMap;
2625
import java.util.HashSet;
2726
import java.util.LinkedList;
@@ -375,10 +374,18 @@ public void preparePersistenceUnitInfos() {
375374
* as defined in the JPA specification.
376375
*/
377376
private List<SpringPersistenceUnitInfo> readPersistenceUnitInfos() {
378-
PersistenceUnitReader reader = new PersistenceUnitReader(this.resourcePatternResolver, this.dataSourceLookup);
379377
List<SpringPersistenceUnitInfo> infos = new LinkedList<SpringPersistenceUnitInfo>();
380-
infos.addAll(Arrays.asList(reader.readPersistenceUnitInfos(this.persistenceXmlLocations)));
381-
if (this.packagesToScan != null || this.mappingResources != null) {
378+
boolean buildDefaultUnit = (this.packagesToScan != null || this.mappingResources != null);
379+
PersistenceUnitReader reader = new PersistenceUnitReader(this.resourcePatternResolver, this.dataSourceLookup);
380+
SpringPersistenceUnitInfo[] readInfos = reader.readPersistenceUnitInfos(this.persistenceXmlLocations);
381+
for (SpringPersistenceUnitInfo readInfo : readInfos) {
382+
infos.add(readInfo);
383+
if (this.defaultPersistenceUnitName != null &&
384+
this.defaultPersistenceUnitName.equals(readInfo.getPersistenceUnitName())) {
385+
buildDefaultUnit = false;
386+
}
387+
}
388+
if (buildDefaultUnit) {
382389
infos.add(buildDefaultPersistenceUnitInfo());
383390
}
384391
return infos;

0 commit comments

Comments
 (0)