diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java index 06ad211443d..65e5abab7fc 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java @@ -75,14 +75,11 @@ import org.springframework.util.ClassUtils; * @author Juergen Hoeller * @author Rod Johnson * @since 2.0 - * @see #setPersistenceXmlLocation * @see #setJpaProperties * @see #setJpaVendorAdapter * @see #setLoadTimeWeaver * @see #setDataSource - * @see EntityManagerFactoryInfo * @see LocalEntityManagerFactoryBean - * @see org.springframework.orm.jpa.support.SharedEntityManagerBean * @see jakarta.persistence.spi.PersistenceProvider#createContainerEntityManagerFactory */ @SuppressWarnings("serial") diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/LocalEntityManagerFactoryBean.java b/spring-orm/src/main/java/org/springframework/orm/jpa/LocalEntityManagerFactoryBean.java index ab8c88a8516..3172dbe22e4 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/LocalEntityManagerFactoryBean.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/LocalEntityManagerFactoryBean.java @@ -51,10 +51,8 @@ import org.springframework.lang.Nullable; * @since 2.0 * @see #setJpaProperties * @see #setJpaVendorAdapter - * @see JpaTransactionManager#setEntityManagerFactory + * @see #setDataSource * @see LocalContainerEntityManagerFactoryBean - * @see org.springframework.jndi.JndiObjectFactoryBean - * @see org.springframework.orm.jpa.support.SharedEntityManagerBean * @see jakarta.persistence.Persistence#createEntityManagerFactory * @see jakarta.persistence.spi.PersistenceProvider#createEntityManagerFactory */ @@ -63,6 +61,8 @@ public class LocalEntityManagerFactoryBean extends AbstractEntityManagerFactoryB private static final String DATASOURCE_PROPERTY = "jakarta.persistence.dataSource"; + private static final String NON_JTA_DATASOURCE_PROPERTY = "jakarta.persistence.nonJtaDataSource"; + /** * Specify the JDBC DataSource that the JPA persistence provider is supposed @@ -78,9 +78,11 @@ public class LocalEntityManagerFactoryBean extends AbstractEntityManagerFactoryB public void setDataSource(@Nullable DataSource dataSource) { if (dataSource != null) { getJpaPropertyMap().put(DATASOURCE_PROPERTY, dataSource); + getJpaPropertyMap().put(NON_JTA_DATASOURCE_PROPERTY, dataSource); } else { getJpaPropertyMap().remove(DATASOURCE_PROPERTY); + getJpaPropertyMap().remove(NON_JTA_DATASOURCE_PROPERTY); } } @@ -111,8 +113,8 @@ public class LocalEntityManagerFactoryBean extends AbstractEntityManagerFactoryB // Create EntityManagerFactory directly through PersistenceProvider. EntityManagerFactory emf = provider.createEntityManagerFactory(getPersistenceUnitName(), getJpaPropertyMap()); if (emf == null) { - throw new IllegalStateException( - "PersistenceProvider [" + provider + "] did not return an EntityManagerFactory for name '" + + throw new PersistenceException( + "PersistenceProvider [" + provider + "] could not find persistence unit for name '" + getPersistenceUnitName() + "'"); } return emf; diff --git a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Car.java b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Car.java index 144e55fdfc4..7b9f3b59e2e 100644 --- a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Car.java +++ b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Car.java @@ -47,4 +47,5 @@ public class Car { String getModel() { return model; } + } diff --git a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Employee.java b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Employee.java index 4459399f50d..cdf456c0098 100644 --- a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Employee.java +++ b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/Employee.java @@ -86,4 +86,5 @@ public class Employee { @PreRemove public void preRemove() { } + } diff --git a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategory.java b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategory.java index 0b878f9058a..55054fa286a 100644 --- a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategory.java +++ b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategory.java @@ -17,6 +17,7 @@ package org.springframework.orm.jpa.domain; public class EmployeeCategory { + private String name; public String getName() { @@ -26,4 +27,5 @@ public class EmployeeCategory { public void setName(String name) { this.name = name; } + } diff --git a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategoryConverter.java b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategoryConverter.java index 3cccaee608c..2b6656dbf3c 100644 --- a/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategoryConverter.java +++ b/spring-orm/src/test/java/org/springframework/orm/jpa/domain/EmployeeCategoryConverter.java @@ -17,7 +17,9 @@ package org.springframework.orm.jpa.domain; import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; +@Converter public class EmployeeCategoryConverter implements AttributeConverter { @Override @@ -37,4 +39,5 @@ public class EmployeeCategoryConverter implements AttributeConverter { @Override @@ -37,4 +39,5 @@ public class EmployeeKindConverter implements AttributeConverter candidates = List.of(Person.class.getName(), DriversLicense.class.getName()); PersistenceManagedTypes managedTypes = new PersistenceManagedTypesScanner( - RESOURCE_LOADER, candidates::contains).scan("org.springframework.orm.jpa.domain"); + resourceLoader, candidates::contains).scan("org.springframework.orm.jpa.domain"); assertThat(managedTypes.getManagedClassNames()).containsExactlyInAnyOrder( Person.class.getName(), DriversLicense.class.getName()); assertThat(managedTypes.getManagedPackages()).isEmpty(); diff --git a/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager-scan.xml b/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager-scan.xml new file mode 100644 index 00000000000..71ed46a09d2 --- /dev/null +++ b/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager-scan.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + false + + + + + + + + + diff --git a/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager.xml b/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager.xml index e2ef60dd32c..92a89ed5927 100644 --- a/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager.xml +++ b/spring-orm/src/test/resources/org/springframework/orm/jpa/eclipselink/eclipselink-manager.xml @@ -5,10 +5,6 @@ - diff --git a/spring-orm/src/test/resources/org/springframework/orm/jpa/hibernate/hibernate-manager-scan.xml b/spring-orm/src/test/resources/org/springframework/orm/jpa/hibernate/hibernate-manager-scan.xml new file mode 100644 index 00000000000..4ef52cf1234 --- /dev/null +++ b/spring-orm/src/test/resources/org/springframework/orm/jpa/hibernate/hibernate-manager-scan.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + org.springframework.orm.jpa.hibernate.SpringSessionContext + org.hibernate.cache.HashtableCacheProvider + + + + + + + + + + + + + + + +