如何使用 JPA 规范访问连接实体的列?

How to access the column of joined entity using JPA Specification?

我正在创建一个规范,其中returns实体的记录基于 实体的 type 列。这 2 个实体具有一对一映射,所以我加入它们。

但问题是类型列在子实体的嵌入 ID 中。

我的代码片段如下:

return (root, query, criteriaBuilder) -> {
        Join<Parent, Child> join = root.join("child");
        return criteriaBuilder.and(
                criteriaBuilder.equal(join.get("id.type"), val)
        );
    };

我还没有成功。如何正确访问类型列以使我的代码正常工作?

我发现下面的代码让它工作 -

return (root, query, criteriaBuilder) -> {
    Join<Parent, Child> join = root.join("child");
    Join<Child, ChildPK> joinId = join.join("id");
    return criteriaBuilder.and(
            criteriaBuilder.equal(joinId.get("type"), val)
    );
};

这里的 ChildPK 是嵌入的 id