【发布时间】:2023-04-09 03:22:02
【问题描述】:
我需要创建一个 JPA 投影,它将从 Entity1 中提取所有记录并包含来自 Entity4 的记录计数。
以下是映射的四个实体及其关系:
Entity1 (ManyToOne) Entity2 (OneToMany) Entity3 (OneToMany) Entity4
在 SQL 中,这可以通过简单的内联选择语句轻松解决。在 JPA 投影中,我正在尝试执行以下操作。
@Value("#{target.getEntity2().getEntity3().getEntity4().size()}")
String getEntity4Count();
在上面的这段代码中,投影在 Entity1 上。当我添加 Entity4 时它会引发异常。下面的代码有效。
@Value("#{target.getEntity2().getEntity3().size()}")
String getEntity3Count();
这甚至是提取这些数据的正确方法吗?所有示例似乎都指向两个实体之间的关系,这对于非常简单的应用程序非常有用,但业务应用程序中的 SQL 往往非常复杂。
有没有办法用JPQL等其他方法完成上述操作?处理需要针对一组实体执行的大量复杂 SQL 的最佳方法是什么?
【问题讨论】:
标签: java spring-boot hibernate jpa