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

2022-09-04 01:59:27

如何在类中创建和实例化 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所做的那样,通过指定域类来创建存储库吗?


答案 1

我终于让它以这种方式工作,

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

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

jpaRepository.save(user);

答案 2

使用您只能使用接口提供的默认方法,而不能使用您在SimpleJpaRepositoryUserRepository

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

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

它将使您自由使用由您在UserRepository


推荐