通用DAO搜索方法

时间:2015-02-16 12:59:16

标签: java spring hibernate genericdao

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

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数据来实现这一点。但是为此我必须在循环中进行服务调用,这是我不想要的。

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

2 个答案:

答案 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型。

相关问题