1

I want to start using Spring Data so I can use JpaRepository, but for some reason injecting the repository fails (NullPointerException)

I added this dependency to my pom.xml

<dependency>
     <groupId>org.springframework.data</groupId>
     <artifactId>spring-data-jpa</artifactId>
     <version>1.4.2.RELEASE</version>
</dependency>

This is my beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/data/jpa
      http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">

   <beans:bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
       <beans:property name="persistenceUnitName" value="primary"/>
   </beans:bean>

   <beans:bean id="transactionManagerFactory" class="org.springframework.orm.jpa.JpaTransactionManager">
       <beans:property name="entityManagerFactory" ref="entityManagerFactory"/>
   </beans:bean>

   <repositories base-package="com.shishi.myproject" />

</beans:beans>

This is my repository

package com.shishi.myproject.repositories;

@Repository
public interface TestRepository extends JpaRepository<TestEntity, Long> {

}

When I try to call, for instance, findAll(), I get a NullPointerException

@Named
public class TestService {

    @Autowired
    private TestRepository testRepository;

    public List<TestEntity> findAll() {
        return testRepository.findAll(); // NullPointer
    }

}

am I missing something?

Thanks for any help

//EDIT

@Named
@RequestScoped
public class TestController {

   @Inject
   private TestService testService;

   public void handleTest() {
      // Is called on button click on website
      // <p:commandButton actionListener="#{testController.handleTest}" process="@this" />
      for (TestEntity testEntity : testService.findAll()) {
         System.out.println(testEntity.getName());
      }
   }

}
Shishigami
  • 441
  • 3
  • 7
  • 20

0 Answers0