diff --git a/org.springframework.aspects/.classpath b/org.springframework.aspects/.classpath
index 0157912a92e..795d5d73050 100644
--- a/org.springframework.aspects/.classpath
+++ b/org.springframework.aspects/.classpath
@@ -16,5 +16,6 @@
+
diff --git a/org.springframework.aspects/ivy.xml b/org.springframework.aspects/ivy.xml
index 4aee2c78f0c..ba6a46fcacf 100644
--- a/org.springframework.aspects/ivy.xml
+++ b/org.springframework.aspects/ivy.xml
@@ -13,6 +13,7 @@
+
@@ -25,6 +26,7 @@
+
diff --git a/org.springframework.aspects/src/main/java/org/springframework/orm/jpa/aspectj/JpaExceptionTranslatorAspect.aj b/org.springframework.aspects/src/main/java/org/springframework/orm/jpa/aspectj/JpaExceptionTranslatorAspect.aj
new file mode 100644
index 00000000000..6ff44249d08
--- /dev/null
+++ b/org.springframework.aspects/src/main/java/org/springframework/orm/jpa/aspectj/JpaExceptionTranslatorAspect.aj
@@ -0,0 +1,22 @@
+package org.springframework.orm.jpa.aspectj;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Query;
+
+import org.springframework.dao.DataAccessException;
+import org.springframework.orm.jpa.EntityManagerFactoryUtils;
+
+public aspect JpaExceptionTranslatorAspect {
+ pointcut entityManagerCall(): call(* EntityManager.*(..)) || call(* EntityManagerFactory.*(..)) || call(* EntityTransaction.*(..)) || call(* Query.*(..));
+
+ after() throwing(RuntimeException re): entityManagerCall() {
+ DataAccessException dex = EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(re);
+ if (dex != null) {
+ throw dex;
+ } else {
+ throw re;
+ }
+ }
+}
\ No newline at end of file
diff --git a/org.springframework.aspects/template.mf b/org.springframework.aspects/template.mf
index cb7efac05c2..f489268605c 100644
--- a/org.springframework.aspects/template.mf
+++ b/org.springframework.aspects/template.mf
@@ -6,7 +6,9 @@ Import-Template:
org.apache.commons.logging.*;version="[1.1.1, 2.0.0)",
org.aspectj.*;version="[1.5.4, 2.0.0)";resolution:=optional,
org.springframework.beans.*;version="[3.0.0, 3.0.1)",
- org.springframework.transaction.*;version="[3.0.0, 3.0.1)";resolution:=optional
+ org.springframework.transaction.*;version="[3.0.0, 3.0.1)";resolution:=optional,
+ org.springframework.orm.jpa.*;version="[3.0.0, 3.0.1)";resolution:=optional,
+ org.springframework.dao.*;version="[3.0.0, 3.0.1)";resolution:=optional
Ignored-Existing-Headers:
Bnd-LastModified,
Import-Package,