使用CriteriaBuilder(OpenJPA)与基类连接时转换为子类

时间:2016-08-27 08:54:56

标签: java jpa inheritance openjpa criteriaquery

我有一个简单的层次结构TradeCustomerOrganisationRoleOrganisationRoleOrganisation相关联。 Organisation有一个属性roles,其中包含组织的所有角色。

我想使用CriteriaBuilder编写JPA查询,其根目录为Organisation,但访问TradeCustomer的属性,例如,我需要加入Organisation OrganisationRole并将其投放到TradeCustomer

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:

CriteriaQuery<String> query = cb.createQuery(String.class);
Root<Organisation> root = query.from(Organisation.class);
Join<Organisation, TradeCustomer> tcJoin = root.join("roles");
query.select(tcJoin.get(TradeCustomer_.rate));

重要的一点是使用列的名称(roles)而不是Organisation_.roles。