0

我有一个场景,其中有两个实体类。它们的结构就像

Class A{
Long id;
// some fields
}

Class B{
Long id;
Long associtedA;
// some field
}

实体 B 中的字段 associatedA 指的是 A.id ,它们之间的关系是 A 一对多 B

我需要获取 A 的列表以及相关的 B 数据列表。

我尝试使用搜索来实现这一点。但我无法找到一些可行的解决方案。我也无法更改实体。

我可以通过检索所有 A 列表然后为每个 A.id 再次检索相关的 B 数据来实现这一点。但为此我必须循环调用服务,这是我不想要的。

这种情况有什么聪明的方法吗?

4

2 回答 2

1

你可能想看看 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()

认为这是最聪明的方法;)(当然,Lambda 表达式需要 Java 8)

于 2015-02-16T13:15:05.607 回答
0

抱歉,这些实体似乎是错误的。你在使用 JPA 吗?实体经理?

如果您使用的是实体管理器(例如 Hibernate),B 类将是这样的:

Class B{
  Long id;
  A associtedA;
  // some field
}

看到 B.associatedA 是 A 类型。

于 2015-02-16T14:31:46.837 回答