在spring jparepository中加入多个表

时间:2017-04-07 08:17:40

标签: spring spring-data spring-data-jpa jpql

我试图通过加入来获取记录。我是spring jparepository的新手。 我知道每个实体(表)都有单独的存储库,当我实现时,我需要定义主键的实体和数据类型。

有人可以建议我如何通过加入两个表来获取记录。

我有两个回购如下:

public interface AEntityRepository extends JpaRepository<AEntity, Integer>

public interface BEntityRepository extends JpaRepository<BEntity, Integer>

我想加入两个实体(AEntity,BEntity)。 我知道我可以使用以下内容进行自定义查询:

@Query("SELECT ****** FROM AEntity ae")
AEntity findCustomrRecords();

但是我可以使用join编写相同类型的查询(连接查询)。 我是否需要一个单独的存储库来实现其他类。

任何人都可以帮忙。

我正在使用mysql。

1 个答案:

答案 0 :(得分:5)

  

据我所知,每个实体(表)都有单独的存储库

这是一个非常普遍的误解。您不希望每个实体都有一个存储库,但是每个聚合根都有。见http://static.olivergierke.de/lectures/ddd-and-spring/

关于您手头的具体问题:在存储库界面中创建自定义方法并使用JPQL对其进行注释应该可以解决问题。所以你会得到类似的东西:

@Query("select a from BEntity b join b.a a where b.foo = :foo")
AEntity getAllFooishAs(String foo);

您可以在查询中使用任何join syntax JPQL offers