栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate CriteriaBuilder连接多个表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate CriteriaBuilder连接多个表

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(/ Your combined target type, e.g. MyQueriedBuildDetails.class, containing buildNumber, duration, pre health, etc./);

Root<BuildDetails> buildDetailsTable = query.from(BuildDetails.class);Join<BuildDetails, CopyQualityDetails> qualityJoin = buildDetailsTable.join(CopyQualityDetails_.build, JoinType.INNER);Join<BuildDetails, DeploymentDetails> deploymentJoin = buildDetailsTable.join(DeploymentDetails_.build, JoinType.INNER);Join<BuildDetails, TestDetails> testJoin = buildDetailsTable.join(TestDetails_.build, JoinType.INNER);List<Predicate> predicates = new ArrayList<>();predicates.add(cb.equal(buildDetailsTable.get(BuildDetails_.buildNumber), "1.0.0.1"));predicates.add(cb.equal(buildDetailsTable.get(BuildDetails_.projectName), "Tera"));query.multiselect(buildDetails.get(BuildDetails_.buildNumber),       buildDetails.get(BuildDetails_.buildDuration),       qualityJoin.get(CodeQualityDetails_.preHealth),       deploymentJoin.get(DeploymentDetails_.deployedEnv),       testJoin.get(TestDetails_.testStatus));query.where(predicates.stream().toArray(Predicate[]::new));TypedQuery<MyQueriedBuildDetails> typedQuery = entityManager.createQuery(query);List<MyQueriedBuildDetails> resultList = typedQuery.getResultList();

我假设您为类构建了JPA元模型。如果您没有元模型,或者只是不想使用它,只需将

BuildDetails_.buildNumber
其余的替换为该列的实际名称
String
,例如
"buildNumber"

请注意,我无法测试答案(也在没有编辑器支持的情况下编写了答案),但是它至少应包含构建查询所需的所有知识。

如何建立元模型?查看用于此的hibernate工具(或参阅“ 如何生成JPA2.0元模型”以了解其他替代方法)。如果您使用的是maven,则只需将

hibernate-jpamodelgen
-dependency添加到构建类路径即可。由于我现在没有任何这样的项目,因此我不太确定以下内容(因此,请带上一粒盐)。仅添加以下内容作为依赖项可能就足够了:

<dependency>  <groupId>org.hibernate</groupId>  <artifactId>hibernate-jpamodelgen</artifactId>  <version>5.3.7.Final</version>  <scope>provided</scope> <!-- this might ensure that you do not package it, but that it is otherwise available; untested now, but I think I used it that way in the past --></dependency>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号