2016-10-31 3 views
-3

hier ist mein Repository@Autowired gibt null zurück

@Service 
public class FuneralPricingRepository { 

    @PersistenceContext 
    private EntityManager em; //this is null 

    public List<FuneralPricing> findAll() { 
     return this.em.createNativeQuery("SELECT * FROM FUNERALPRICING").getResultList(); 
    } 
} 

AS400calls autowired ist aber funeralPricingRepository nicht.

public class TestFuneralPremiumProvider implements TestHandler { 

    @Autowired 
    private As400Calls as400Calls; //this is not null 

    @Autowired 
    private FuneralPricingRepository funeralPricingRepository; //this is null 

Bitte helfen ...

+0

überprüfen Paket von 'FuneralPricingRepository' ist in' componentscan' Weg ist? – D0dger

+0

'@ Autowired' kann nicht' null' sein. Wenn eine Abhängigkeit nicht gelöst werden kann, wird Ihre Anwendung explodieren. Wenn dies nicht der Fall ist, verwenden Sie keine automatische Verdrahtung oder erstellen selbst eine Instanz von 'TestFuneralPremiumProvider'. –

Antwort

0

Sie sind nicht zu injizieren EntityManager diese Weise erlaubt. Inject EntityManagerFactory stattdessen. Dann sollten beide Injektionen funktionieren.

Ein Entitätsmanager kann nur in Klassen injiziert werden, die innerhalb einer Transaktion ausgeführt werden. Mit anderen Worten, es kann nur in einem EJB injiziert werden. Andere Klassen müssen eine EntityManagerFactory verwenden, um einen EntityManager zu erstellen und zu zerstören.

- Source

Ist Ihr Repository in einem Paket in componentscan Weg? Wenn noch nicht, füge

hinzu
@ComponentScan("com.my.package.where.repository.is") 

Eine andere Sache ist dein Repository. Was ist der Grund, nicht Spring Data JPA zu verwenden? Einfach erweitern CRUDRepository und Sie erhalten findAll und einige weitere Methoden kostenlos.

0

Ich denke Problem in diesem

TestFuneralPremiumProvider 

ohne Anmerkung @Component oder Erklärung Bohne in Config

+1

Warum ist 'As400Calls' dann nicht null? – dit