如何在类中动态创建Jpa存储库?

时间:2014-03-01 15:04:21

标签: java spring jpa spring-data spring-data-jpa

如何在类中创建和实例化jpa存储库?我遇到的情况是我必须为泛型类中的不同实体创建存储库。

我可以轻松地为Neo4j存储库这样做,

GraphRepository<T> graphRepository;

this.neo4jTemplate = new Neo4jTemplate(new RestGraphDatabase(
    "http://localhost:7474/db/data"));
this.graphRepository = neo4jTemplate.repositoryFor(domainClass); 

对于JpaRepository,我检查了文档,发现了这个,

RepositoryFactorySupport factory = … // Instantiate factory here
UserRepository repository = factory.getRepository(UserRepository.class);

我不确定如何在上面的代码中实例化工厂。

我也不能通过指定域类来创建像Neo4j那样的存储库吗?

2 个答案:

答案 0 :(得分:11)

我终于以这种方式工作了,

SimpleJpaRepository<User, Serializable> jpaRepository;
jpaRepository = new SimpleJpaRepository<User, Serializable>(
    User.class, entityManager);

使用SimpleJpaRepository,我可以使用所有存储库方法。

jpaRepository.save(user);

答案 1 :(得分:0)

使用 SimpleJpaRepository 您只能使用接口提供的默认方法,而不能使用您在 UserRepository 中声明的方法

如果您想创建 UserRepository 的接口实例,您可以使用 -

RepositoryFactorySupport factory = new JpaRepositoryFactory(entityManager);
UserRepository repository = factory.getRepository(UserRepository.class);

它会让您自由使用您在 UserRepository

中定义的自定义方法