我有一个场景,其中有两个实体类。它们的结构就像
Class A{
Long id;
// some fields
}
Class B{
Long id;
Long associtedA;
// some field
}
实体B中的字段associtedA指的是A.id 它们之间的关系是 A 一对多 B
我需要获取 A 的列表以及与其相关的 B 数据列表。
我尝试使用搜索来实现这一点。但我无法找到一些可行的解决方案。我也无法更改实体。
我可以通过检索所有 A 列表然后针对每个 A.id 再次检索相关的 B 数据来实现此目的。但为此我必须在循环中进行服务调用,这是我不想要的。
对于这种情况有什么聪明的方法吗?
最佳答案
您可能想看看 JinQ ( http://www.jinq.org ) 那么你可以这样做:
streamProvider.streamAll(entityManager, B.class).join((a, source) -> source.stream(A.class)
.where(pair -> pair.getOne().id == pair.getTwo().id)
.select(pair -> pair.getOne())
.toArray()
认为这是最聪明的方法;)(当然,您需要 Java 8 来实现 Lambda 表达式)
关于java - 通用DAO搜索方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541967/