Announcement Announcement Module
Collapse
No announcement yet.
Not enabling Exception Translation with Spring Data? Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Not enabling Exception Translation with Spring Data?

    According to the doc an @Repository annotation is required to activate Exception Translation:
    2.1.1 "Beyond that it activates persistence exception translation for all beans annotated with @Repository to let exceptions being thrown by the JPA presistence providers be converted into Spring's
    DataAccessException hierarchy."

    When I try this with a mini-example, it translates the exceptions even without @Repository:

    Code:
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface CustomerTestRepository
            extends JpaRepository<Customer, Long> { 
    
    }
    Code:
    	<jpa:repositories base-package="...jpa.test" />
    
    	<tx:annotation-driven transaction-manager="transactionManager" />
    
         <!-- just basic entityManagerFactory, transactionManager, ... -->

    The following test fails:

    Code:
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = { "classpath*:test-root-context.xml" })
    public class SpringDataExceptionTranslationTest {
    
        @Autowired
        CustomerTestRepository cr;
    
        @Test
        public void testOptimisticLockingException() {
            try {
                Customer c = cr.save(new Customer("a", "Hans", "Muster", 1.3));
                c.setVersion(c.getVersion() - 1); // try provoking an optimstic locking exception
    
                cr.save(c);
    
                Assert.fail("should have thrown an exception");
            } catch (OptimisticLockingFailureException dae) {
                Assert.fail("should not throw a SPRING optimistic locking exception");
            } catch (OptimisticLockException ole) {
                // expected
            }
        }
    
    }
    I also tried to fake the exception translator with:
    Code:
     <bean id="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0" 
         class="java.lang.String" />
    But it dit not help either.

  • #2
    For me, it is the other way round. I cannot active it, even PersistenceExceptionTranslationPostProcessor is active and the interface is annotated with @Repository.

    Had you any success in finding the problem?

    Comment

    Working...
    X