Ich bin neu im Frühjahr und jpa. Ich habe ähnliche Themen durchsucht und bin immer noch nicht in der Lage, mein Problem zu lösen. Ich habe versucht, mein EmployeeRepository (Imp) in meine Testdatei zu übertragen, aber es gibt immer null zurück ... Der gesamte Code befindet sich unter demselben Paket. Vielen Dank für Ihre Zeit.spring @Autowired ein Repository gibt null zurück
Eine andere Frage ist das, was ich benutze sollte (ich versucht hatte, beide ohne Glück)
@Autowired
private EmployeeRepositoryImp er;
und
@Autowired
private EmployeeRepository er;
Unten ist mein Code ...
package com.rw.examples.hibernate_ogm_neo4j;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public EntityManager entityManager() {
return entityManagerFactory().createEntityManager();
}
@Bean
public EntityManagerFactory entityManagerFactory() {
return Persistence.createEntityManagerFactory("ogm-neo4j");
}
}
package com.rw.examples.hibernate_ogm_neo4j;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long>{
}
package com.rw.examples.hibernate_ogm_neo4j;
import javax.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public class EmployeeRepositoryImp extends SimpleJpaRepository<Employee, Long> implements EmployeeRepository{
private EntityManager entityManager;
@Autowired
public EmployeeRepositoryImp(Class<Employee> domainClass, EntityManager em) {
super(domainClass, em);
// TODO Auto-generated constructor stub
this.entityManager = em;
}
}
package com.rw.examples.hibernate_ogm_neo4j;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.stereotype.Controller;
@Controller
@EnableJpaRepositories (basePackages = {"com.rw.examples.hibernate_ogm_neo4j"})
@ComponentScan(basePackages = {"com.rw.examples.hibernate_ogm_neo4j"})
public class RepositoryTest {
@Autowired
private EmployeeRepositoryImp er;
@Test
public void testRepository() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
EntityManagerFactory emf = ctx.getBean(EntityManagerFactory.class);
EntityManager em = emf.createEntityManager();
System.out.println("testRepository");
er.save(new Employee("Frank"));
System.out.println("list employees using repository");
Iterable<Employee> employees = er.findAll();
employees.forEach(e->System.out.println(e.toString()));
}
}
Wenn Sie Spring verwenden, empfehle ich Ihnen, [Spring Data Neo4j] (https://github.com/spring-projects/spring-data-neo4j) auszuprobieren. Es wird von den beiden Entwicklern hinter Neo4j und Spring unterstützt. – digx1