如何在Spring Boot中访问一个存储库中的两个模型?

时间:2017-05-12 14:07:20

标签: spring spring-mvc spring-boot

我试图在一个存储库中访问两个模型,并通过加入它们来获取数据。有人可以在Spring Boot中显示一个存储库中访问两个模型的示例吗?

1 个答案:

答案 0 :(得分:0)

如果您需要ModelA中的x字段和结果集中ModelB中的y字段,则不能在一个存储库中直接使用两个模型。

您必须创建一个不同的模型ModelC,其中仅包含ModelA和ModelB所需的字段。在ModelC中使用其字段创建构造函数。

在您的存储库中,您可以调用此构造函数以从ModelA和ModelB获取连接数据。

示例:

    @Entity
    public class ModelA{
    Integer i;
    String aaa;
    String bbb;
    String ccc;
    //getters and setters
    }


    @Entity
    public class ModelB{
    Integer j;
    String ddd;
    String eee;
    String fff;
    //getters and setters
    }


    @Entity
    public class ModelC{
    String aaa; //from modelA
    String bbbb;
    String ddd;   //from modelB
    public (String a,String b,String d){
    this.aaa=a;
    this.bbb=b;
    this.ddd=d;
    }

    //getters and setters
    }




import yourpackage.ModelC

@Repository
public interface ModelARepository extends JpaRepository<ModelA, Integer> {

@Query("select new ModelC(a.aaa,b.ddd,b.eee) from ModelA a, ModelB b where a.aaa = b.bbb and a.aaa=:x [your query...so on]")
    public List<ModelC> findEntities(@Param("x") String x);
}