当前位置: 首页 > 知识库问答 >
问题:

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

巫新知
2023-03-14

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

我可以很容易地为Neo4j存储库这样做,

GraphRepository<T> graphRepository;

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

对于JpaRepostory,我检查了留档,发现了这个,

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

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

另外,我不能像为Neo4j那样通过指定域类来创建存储库吗?

共有3个答案

米元凯
2023-03-14

如果你想使用你的界面,你可以做一些类似的事情。

  1. 添加一个实现接口的新类(在您的情况下是UserRepository),并扩展SimpleJpaRepository
private static class SimpleUserRepository<T, ID> extends SimpleJpaRepository<T, ID> implements UserRepository<T, ID> {
    public SimpleIRepository(Class<T> domainClass, EntityManager em) {
        super(domainClass, em);
    }
}
UserRepository<User, Long> userRepository = new SimpleUserRepository<>(User.class, em);
userRepository.save(user);
云何平
2023-03-14

使用< code>SimpleJpaRepository,您只能使用interface提供的默认方法,而不能使用您在< code>UserRepository中声明的方法

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

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

它将允许您自由使用您在UserRepository中定义的自定义方法

公孙慎之
2023-03-14

我终于让它这样工作了,

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

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

jpaRepository.save(user);
 类似资料:
  • 问题内容: 如何在类内创建和实例化jpa存储库?我处于一种情况,必须为通用类中的不同实体创建存储库。 对于Neo4j存储库,我可以轻松地做到这一点,例如, 对于JpaRepository,我检查了文档并发现了这一点, 我不确定如何在以上代码中实例化工厂。 还不能通过指定域类来像创建Neo4j一样创建存储库吗? 问题答案: 我终于以这种方式工作了, 通过SimpleJpaRepository,我可以

  • 你好,伙计们,我在一个动态存储中学习,我从数组中获得一个数据,并创建一个存储,但如果我试图将列和数据加载到我的网格中,我会得到"未捕获的类型错误:无法读取未定义的属性'getProxy'" 控制器: window.js: });

  • 问题内容: 我有类名称的列表,想动态创建它们的实例。例如: 如何在Python中动态创建该实例?谢谢! 问题答案: 这通常被称为反思或自省。找出类似的问题,这些问题可以回答您要尝试做的事情: Python是否具有与Java类forname等效的名称 您可以使用字符串实例化Python中的类吗

  • 目前我一直在使用以下Spring JPA存储库自定义查询, 我需要修改这个查询时,筛选文本将是逗号分隔的值。但按照以下方式,它将是一个动态查询,我如何执行它。 我需要构建动态查询,

  • 问题内容: 我需要在JavaScript中动态创建CSS样式表类,并将其分配给一些HTML元素(例如div,table,span,tr等)以及一些控件(例如asp:Textbox,Dropdownlist和datalist)。 可能吗? 一个样本很好。 问题答案: 尽管我不确定为什么要使用JavaScript创建CSS类,但这是一个选择:

  • 出于个人原因,对于同一个实体,我有多个存储库,其中我有多个需要的本机命名查询,我的第一个想法是将查询代码从一个实体移动到另一个存储库,这样当我想要编辑查询时,我会在存储库中找到它,而不是实体(以避免一个大的实体代码充满查询)。 所以我尝试了这个实现。 这是我的存储库: 接下来是我的实体: 启动时,我确实会遇到以下异常: org.springframework.beans.factory.BeanC