首页 > 解决方案 > 解释 JPA Criteria API From 类及其类型参数的含义

问题描述

javax.persistence.criteria.From的目的是什么,它的类型参数ZX代表什么?

文档根本不清楚。

在看到javax.persistence.criteria.Root类型具有以下定义后,我变得更加困惑:

public interface Root<X> extends From<X,X>

标签: javajpacriteria-apijpa-criteria

解决方案


它是一个通用接口:javax.persistence.criteria.Joinjavax.persistence.criteria.Root在调用以下方法之一时允许一致性:

  • javax.persistence.criteria.Join#getParent
  • javax.persistence.criteria.From#getCorrelationParent

让我们尝试使用javax.persistence.criteria.Join#getParent When You calljavax.persistence.criteria.Join#getParent结果可以是另一个 Join 或 Root 来解释,两者的通用接口是javax.persistence.criteria.From

参见示例:

Root<User> user = query.from(User.class);
Join<User, Account> account = user.join(User_.account);
Join<Account, AccountRole> accountRole = account.join(Account_.accountRoles);

然后

From<?, User> root = account.getParent();// here we have Root<User> extends From<User, User>
From<?, Account> join = accountRole.getParent();// here we have Join<User, Account> extends From<User, Account>

正如您在上面的示例中看到的那样,Z 和 X 代表连接的左侧和右侧类型。


推荐阅读