Browse Source

Merge 5cc0d9e9dc into 404ab717e2

pull/47802/merge
Lansana Diomande 1 day ago committed by GitHub
parent
commit
31a0e55d3f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 32
      module/spring-boot-hibernate/src/test/java/org/springframework/boot/hibernate/autoconfigure/HibernateJpaAutoConfigurationTests.java
  2. 21
      module/spring-boot-jpa/src/main/java/org/springframework/boot/jpa/EntityManagerFactoryBuilder.java

32
module/spring-boot-hibernate/src/test/java/org/springframework/boot/hibernate/autoconfigure/HibernateJpaAutoConfigurationTests.java

@ -114,6 +114,7 @@ import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager @@ -114,6 +114,7 @@ import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager
import org.springframework.orm.jpa.persistenceunit.ManagedClassNameFilter;
import org.springframework.orm.jpa.persistenceunit.PersistenceManagedTypes;
import org.springframework.orm.jpa.persistenceunit.PersistenceUnitManager;
import org.springframework.orm.jpa.persistenceunit.PersistenceUnitPostProcessor;
import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;
import org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
@ -351,6 +352,19 @@ class HibernateJpaAutoConfigurationTests { @@ -351,6 +352,19 @@ class HibernateJpaAutoConfigurationTests {
});
}
@Test
void shouldProcessAllPersistenceUnitPostProcessorsDeclaredAsBeans() {
this.contextRunner.withUserConfiguration(TestConfigurationWithMultipleCustomPersistenceUnitPostProcessors.class)
.run((context) -> {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = context
.getBean(LocalContainerEntityManagerFactoryBean.class);
PersistenceUnitInfo persistenceUnitInfo = entityManagerFactoryBean.getPersistenceUnitInfo();
assertThat(persistenceUnitInfo).isNotNull();
assertThat(persistenceUnitInfo.getManagedClassNames()).contains(
"customized.attribute.converter.class.name", "customized.attribute.converter.class.othername");
});
}
@Test
void customManagedClassNameFilter() {
this.contextRunner.withBean(ManagedClassNameFilter.class, () -> (s) -> !s.endsWith("City"))
@ -1168,6 +1182,24 @@ class HibernateJpaAutoConfigurationTests { @@ -1168,6 +1182,24 @@ class HibernateJpaAutoConfigurationTests {
}
@Configuration(proxyBeanMethods = false)
@TestAutoConfigurationPackage(HibernateJpaAutoConfigurationTests.class)
static class TestConfigurationWithMultipleCustomPersistenceUnitPostProcessors {
@Bean
EntityManagerFactoryBuilderCustomizer entityManagerFactoryBuilderCustomizer() {
return (builder) -> builder.addPersistenceUnitPostProcessors(
(pui) -> pui.addManagedClassName("customized.attribute.converter.class.name"));
}
@Bean
EntityManagerFactoryBuilderCustomizer otherEntityManagerFactoryBuilderCustomizer() {
return (builder) -> builder.addPersistenceUnitPostProcessors(
(pui) -> pui.addManagedClassName("customized.attribute.converter.class.othername"));
}
}
static class CustomJpaTransactionManager extends JpaTransactionManager {
}

21
module/spring-boot-jpa/src/main/java/org/springframework/boot/jpa/EntityManagerFactoryBuilder.java

@ -17,9 +17,12 @@ @@ -17,9 +17,12 @@
package org.springframework.boot.jpa;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
@ -129,6 +132,24 @@ public class EntityManagerFactoryBuilder { @@ -129,6 +132,24 @@ public class EntityManagerFactoryBuilder {
this.persistenceUnitPostProcessors = persistenceUnitPostProcessors;
}
/**
* Add some {@linkplain PersistenceUnitPostProcessor persistence unit post processors}
* to be applied to the PersistenceUnitInfo used for creating the
* {@link LocalContainerEntityManagerFactoryBean}.
* @param persistenceUnitPostProcessors the persistence unit post processors to use
*/
public void addPersistenceUnitPostProcessors(PersistenceUnitPostProcessor... persistenceUnitPostProcessors) {
if (this.persistenceUnitPostProcessors == null) {
this.persistenceUnitPostProcessors = persistenceUnitPostProcessors;
return;
}
var combined = new ArrayList<>(Arrays.asList(this.persistenceUnitPostProcessors));
combined.addAll(Arrays.asList(persistenceUnitPostProcessors));
this.persistenceUnitPostProcessors = combined.toArray(PersistenceUnitPostProcessor[]::new);
}
/**
* A fluent builder for a LocalContainerEntityManagerFactoryBean.
*/

Loading…
Cancel
Save