规范中可以使用非实体字段吗?

时间:2019-01-15 08:54:54

标签: java jpa spring-data-jpa jpa-2.0

我有代码:

public class CustomFilter<T> implements Specification<EntityHE> {

    @Override
    public Predicate toPredicate(Root<EntityHE> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
        List<Predicate> predicates = new ArrayList<>();

        Predicate hasTenant = cb.equal(root.get("custom_field"), "value");
        predicates.add(hasTenant);

        return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    }
}

@Entity(name = "entity")
@Table(name = "table")
public class EntityHE {

    @Getter @Setter
    @Column(name = "kind")
    private String kind;

    @Getter @Setter
    @Column(name = "modified")
    private Instant modified;

    public EntityHE(){};
}

我可以调用错误,因为我的实体中没有字段“ custom_field”。 可以在不添加“ custom_field”作为我的实体中的字段的情况下通过此规范进行过滤吗?

1 个答案:

答案 0 :(得分:2)

不,那不可能。由于该规范将用于JPA Criteria API查询中,因此您只能查询映射的属性。