我有一个场景,其中有两个实体类。他们的结构就像
Class A{
Long id;
// some fields
}
Class B{
Long id;
Long associtedA;
// some field
}
实体B中关联的字段A指的是A.id 它们之间的关系是一对多B
我需要获取A的列表并与它们相关的B数据列表。
我尝试使用搜索来实现此功能。但我无法找到一些有效的解决方案。我也无法改变实体。
我可以通过检索所有A列表然后为每个A.id再次检索相关的B数据来实现这一点。但是为此我必须在循环中进行服务调用,这是我不想要的。
这种情况有什么聪明的方法吗?
答案 0 :(得分: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()
认为这是最聪明的方式;)(当然,你需要Java 8 for Lambda Expressions)
答案 1 :(得分:0)
抱歉,这些实体似乎有误。你在使用JPA吗?实体经理?
如果您使用的是实体管理器(例如Hibernate),则B类将是这样的:
Class B{
Long id;
A associtedA;
// some field
}
见B.associtedA属于A型。