Hibernate:使用 CriteriaQuery 从多个表中查询 select 值

Hibernate: Query to select values from multiple tables using CriteriaQuery

比方说,我有一个类似

的查询
Select a.valA, b.valB
from tableA a join tableB b on a.joinCol = b.joinCol
where a.someCol = 1.

我想在对数据库的一次查询中使用 Hibernate(和 Spring Data)执行它。我知道,我只能写

Query query = em.createQuery(...);
List<Object[]> resultRows = (List<Object[]>)query.getResultList();

但我的问题是 - 是否有可能以类型安全的方式进行,例如使用 CriteriaQuery?困难在于,如您所见,我需要 select 来自不同表的值。有什么办法可以做到这一点吗?

一个简单的例子,其中一个员工与他可能拥有的多个工作有多对多关系:

CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<Tuple> criteria = builder.createTupleQuery();
Root<TableA> root = criteria.from(TableA.class);
Path<Long> qId = root.get("id");
Path<String> qTitle = root.get("title");
Join<TableA, TableB> tableTwo = root.join("joinColmn", JoinType.INNER);

criteria.multiselect(qId, qTitle, tableTwo);
List<Tuple> tuples = session.createQuery(criteria).getResultList();
for (Tuple tuple : tuples)
{
   Long id = tuple.get(qId);
   String title = tuple.get(qTitle);
   TableB tableB= tuple.get(tableTwo);
}

但看到这里有另一个答案: JPA Criteria API - How to add JOIN clause (as general sentence as possible)