DAO hopefully works. Every @Transactional object with base class, which implements some interface, need implement it's own interface, because of Spring AOP. Another solution is probably configure Spring to use AspectJ.