spring - 在 spring jparepository 中加入多个表

标签 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。

最佳答案

I understand that there is separate repository for each entity(table)

这是一个非常常见的误解。您不希望每个实体都有一个存储库,而是每个聚合根都有一个存储库。请参阅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在查询中。

关于spring - 在 spring jparepository 中加入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43273118/

相关文章:

spring - 无法加载/WEB-INF/applicationContext.xml

java - Spring Jpa并发事务和陈旧数据

java - 无法打开 JPA EntityManager 进行事务处理,在 spring 和 hibernate 中使用 persistence.xml

java - Hibernate 更新 - 在 where 子句中按父参数过滤时出现异常

带有 CRUD 存储库的 MySql ANY_VALUE() 方法

spring - Hibernate 查询使用 Jparepository 连接两个表

java - 在 Spring Boot 中使用重定向

java - Spring3 所需的 Jars 以及其他 Jars 的功能?

java - 从实际复制的 DuplicateKeyException 中检索特定的 MongoDB 键 (Java/Spring)

java - 使用maven的spring hibernate集成中的org.springframework.beans.factory.BeanCreationException