diff --git a/spring-orm-hibernate4/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider.java b/spring-orm-hibernate4/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider.java index 6f2dd82036..a3e147cde5 100644 --- a/spring-orm-hibernate4/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider.java +++ b/spring-orm-hibernate4/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider.java @@ -37,7 +37,9 @@ import org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo; * is an alternative for compatibility with earlier Hibernate versions (3.6-4.2). * * @author Juergen Hoeller + * @author Joris Kuipers * @since 4.1 + * @see Configuration#addPackage */ class SpringHibernateJpaPersistenceProvider extends HibernatePersistenceProvider { 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 f08be25ac7..6bb859a9ae 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 @@ -149,6 +149,11 @@ public class LocalContainerEntityManagerFactoryBean extends AbstractEntityManage *
Default is none. Specify packages to search for autodetection of your entity * classes in the classpath. This is analogous to Spring's component-scan feature * ({@link org.springframework.context.annotation.ClassPathBeanDefinitionScanner}). + *
Note: There may be limitations in comparison to regular JPA scanning. + * In particular, JPA providers may pick up annotated packages for provider-specific + * annotations only when driven by {@code persistence.xml}. As of 4.1, Spring's + * scan can detect annotated packages as well if supported by the given + * {@link JpaVendorAdapter} (e.g. for Hibernate). *
If no explicit {@link #setMappingResources mapping resources} have been * specified in addition to these packages, Spring's setup looks for a default * {@code META-INF/orm.xml} file in the classpath, registering it as a mapping diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java index a9dfd32b9b..f4656b64fa 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java @@ -215,6 +215,11 @@ public class DefaultPersistenceUnitManager * may live next to regularly defined units originating from {@code persistence.xml}. * Its name is determined by {@link #setDefaultPersistenceUnitName}: by default, * it's simply "default". + *
Note: There may be limitations in comparison to regular JPA scanning. + * In particular, JPA providers may pick up annotated packages for provider-specific + * annotations only when driven by {@code persistence.xml}. As of 4.1, Spring's + * scan can detect annotated packages as well if supported by the given + * {@link org.springframework.orm.jpa.JpaVendorAdapter} (e.g. for Hibernate). *
If no explicit {@link #setMappingResources mapping resources} have been * specified in addition to these packages, this manager looks for a default * {@code META-INF/orm.xml} file in the classpath, registering it as a mapping diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaVendorAdapter.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaVendorAdapter.java index 907e9dbbe1..3f1510eb4f 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaVendorAdapter.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/EclipseLinkJpaVendorAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,11 +33,15 @@ import org.springframework.orm.jpa.JpaDialect; * Persistence Services (EclipseLink). Developed and tested against EclipseLink 2.4. * *
Exposes EclipseLink's persistence provider and EntityManager extension interface, - * and supports {@link AbstractJpaVendorAdapter}'s common configuration settings. + * and adapts {@link AbstractJpaVendorAdapter}'s common configuration settings. + * No support for the detection of annotated packages (through + * {@link org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo#getManagedPackages()}) + * since EclipseLink doesn't use package-level metadata. * * @author Juergen Hoeller * @author Thomas Risberg * @since 2.5.2 + * @see EclipseLinkJpaDialect * @see org.eclipse.persistence.jpa.PersistenceProvider * @see org.eclipse.persistence.jpa.JpaEntityManager */ diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaVendorAdapter.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaVendorAdapter.java index eceada62e0..8fe87684f4 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaVendorAdapter.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaVendorAdapter.java @@ -40,7 +40,12 @@ import org.springframework.orm.jpa.JpaDialect; * Hibernate EntityManager. Developed and tested against Hibernate 3.6 and 4.2/4.3. * *
Exposes Hibernate's persistence provider and EntityManager extension interface, - * and supports {@link AbstractJpaVendorAdapter}'s common configuration settings. + * and adapts {@link AbstractJpaVendorAdapter}'s common configuration settings. + * Also supports the detection of annotated packages (through + * {@link org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo#getManagedPackages()}), + * e.g. containing Hibernate {@link org.hibernate.annotations.FilterDef} annotations, + * along with Spring-driven entity scanning which requires no {@code persistence.xml} + * ({@link org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean#setPackagesToScan}). * *
Note that the package location of Hibernate's JPA support changed from 4.2 to 4.3: * from {@code org.hibernate.ejb.HibernateEntityManager(Factory)} to @@ -51,6 +56,9 @@ import org.springframework.orm.jpa.JpaDialect; * @author Juergen Hoeller * @author Rod Johnson * @since 2.0 + * @see HibernateJpaDialect + * @see org.hibernate.ejb.HibernatePersistence + * @see org.hibernate.ejb.HibernateEntityManager */ public class HibernateJpaVendorAdapter extends AbstractJpaVendorAdapter { diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java index 39592480f5..7a10055aca 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/OpenJpaVendorAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,11 +33,15 @@ import org.springframework.orm.jpa.JpaDialect; * Developed and tested against OpenJPA 2.2. * *
Exposes OpenJPA's persistence provider and EntityManager extension interface, - * and supports {@link AbstractJpaVendorAdapter}'s common configuration settings. + * and adapts {@link AbstractJpaVendorAdapter}'s common configuration settings. + * No support for the detection of annotated packages (through + * {@link org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo#getManagedPackages()}) + * since OpenJPA doesn't use package-level metadata. * * @author Costin Leau * @author Juergen Hoeller * @since 2.0 + * @see OpenJpaDialect * @see org.apache.openjpa.persistence.PersistenceProviderImpl * @see org.apache.openjpa.persistence.OpenJPAEntityManager */ diff --git a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateEjbPersistenceProvider.java b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateEjbPersistenceProvider.java index 11a6e4f6a6..f0d9bffd26 100644 --- a/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateEjbPersistenceProvider.java +++ b/spring-orm/src/main/java/org/springframework/orm/jpa/vendor/SpringHibernateEjbPersistenceProvider.java @@ -33,7 +33,9 @@ import org.springframework.orm.jpa.persistenceunit.SmartPersistenceUnitInfo; *
Compatible with Hibernate 3.6 as well as 4.0-4.2. * * @author Juergen Hoeller + * @author Joris Kuipers * @since 4.1 + * @see Ejb3Configuration#addPackage */ class SpringHibernateEjbPersistenceProvider extends HibernatePersistence {