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

具有多个实体查找器的通用spring jpa存储库

山森
2023-03-14

我的应用程序有250多个表,每个表都有ID和name列。我正在尝试用Hibernate5+将我们的应用程序从Hibernate3迁移到Spring-JPA4.3。

在当前的hibernate层中,我有(选项1):

public class DAO
{
    private Session session;

    public DAO(Session session)
    {
        this.session=session;
    }

    public EntityA findById(String id)
    {
        //implementation
        return entityA;
    }
    public EntityB findByName(String name)
    {
        //implementation
        return entityB;
    }
    public EntityC findByIdAndName(String id, String name)
    {
        //implementation
        return entityC;
    }
}
public class DAO<T>
{
    public T findById(String id)
    {
        //implementation
        return T;
    }
    public T findByName(String name)
    {
        //implementation
        return T;
    }
    public T findByIdAndName(String id, String name)
    {
        //implementation
        return T;
    }
}

因此,如何在一个JPA存储库中执行以下操作:

{
    @Query("from EntityA where id=?1")
    EntityA findEntityAById(String id);

    @Query("from EntityB where name=?1")
    EntityB findEntityBById(String name);

    @Query("from EntityC where id=?1 and name=?2")
    EntityC findEntityCById(String id,String name);
}

共有1个答案

靳茂
2023-03-14

您应该能够创建一个具有公共属性的超级类,将其标记为@MappedSuperClass,并将该超级类的存储库创建为@NoRepositoryBean。你只需要为你的结果做一些选角。看这个答案

 类似资料:
  • 我有几个实体,并使用Spring Data JPA存储库与规范查询我的数据库。因此,我创建了一个泛型类< code>SpecBuilder来基于查询描述(< code>MyQueryDescriptor)构建我的查询。 我的存储库: 和 现在有三件事我不太确定:< br> 1) 使用泛型SpecBuilder是一个干净的设计吗? 2) 有没有办法避免为每个实体编写这些存储库接口?假设一个通用存储库

  • 我在一个项目中工作,我有一个通用的服务和存储库层。我正在使用Automapper将DTO映射到实体模型。一个实体可以有一个或多个DTO。我的问题是,如何告诉我的通用存储库类哪个DTO应该返回到服务层? 实体 DTOs 通用存储库 通用存储库实现 通用服务 通用服务实现 实体存储库和服务 控制器我想在泛型服务中调用findBy方法,并选择要返回的DTO。合同类是我测试的一部分,但它不起作用。我是否必

  • 我想使用Spring LDAP 设置多个 LDAP 存储库。我的目标是同时在所有存储库中创建或更新对象。 我使用LdapRepository Spring接口,我认为目前这是不可能的。 我想知道我是否可以创建自己的LdapRepository来扩展Spring,但是我不知道如何开始。 这是我的配置: 完整地说,一个存储库: 知道怎么做吗? 提前感谢任何帮助。

  • 首先是一点背景:我试图在一个文档库中识别街道地址,我们决定,显而易见的解决方案是使用NLP(本例中为Apache OpenNLP)工具来实现这一点,到目前为止,一切看起来都很好,尽管我们仍然需要用大量文档来训练模型,但这并不是一个真正的问题。我们通过使用DataMake中的USAddress解析器,为地址验证添加了额外的步骤,从而改进了解决方案。我最大的问题是,如果地址旁边没有一个位置,地址本身就

  • 我正在使用spring数据JPA存储库来调用存储过程。就好像在整个应用程序中,我们对存储过程有严格的依赖性一样,我必须使用非实体存储过程调用。以下是我选择的称呼方式: 它适用于存储过程返回单个结果集的所有情况。 但是它不适用于返回多个结果集的存储过程。它只返回第一个结果集,不给出任何错误。 在我们的项目中,我们有spring-boot-starter-data-jpa版本1.5.8和hiberna

  • 我正在尝试将通用Jpa规范与Spring启动一起使用,但出现了这个问题。 在我的代码中,我试图使用模块概念,所以我有5个模块(实体、dao、服务、web和前端,带角度),所以这是我的代码: 我的通用Jpa规范接口。 存储库示例。 服务 和控制器