java - 泛型DAO搜索方法

  显示原文与译文双语对照的内容
0 0

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


Class A{
Long id;
//some fields
}

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

实体B 中的字段associtedA是 A.id的关系,它们之间的关系是 one-to-many

我需要得到A的列表及其相关的B 数据清单。

我尝试用搜索来实现这个。 但是我找不到工作的解决方案。 我也不能改变实体。

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

这个场景有什么聪明的方法?

时间: 原作者:

0 0

你可能需要查看 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 )

0 0

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

如果你使用的是实体管理器( 例如 Hibernate,例如) 类,则将是如下所示:


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

请参见 B.associtedA的类型为。

...