java - 通用DAO搜索方法

标签 java spring hibernate genericdao

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

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/

相关文章:

java - ComponentAdapter 中 componentResized 方法的任何替代方法

java - 不使用 root 进行映射的 Spring Data REST 示例

java - 如何在 Jetty JNDI Atomikos 配置上设置事务超时

java - ClassNotFoundException : org. hibernate.service.jndi.JndiException

java - Hibernate : org. hibernate.QueryParameterException:无法找到命名参数

java - 实体管理器正在重新创建表

Java字符转义

java - 遍历对象层次结构时将节点标记为已访问

java - Spring Boot 中的多播 Websocket

java - 具有 JPA 实体的 RESTful 客户端