无法创建将检查字段类的规范

时间:2013-03-23 06:34:32

标签: java spring jpa predicate

实体订单包含字段:

@ManyToOne(optional = false) private AbstractRequester requester;

我想通过键入此字段获取数据。

我在文档中创建了规范,但是在

page = orderRepository.findAll(spec, pageable);

获取例外

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.QueryException: could not resolve property: class of: ...order.Order

我的规格:

@Override
    public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    Predicate megaPredicate = cb.conjunction();`
    ...
megaPredicate = cb.and(megaPredicate, cb.and(
                            cb.equal(root.get("requester").type(), cb.literal(PersonRequester.class))
...
return megaPredicate;
}

1 个答案:

答案 0 :(得分:0)

您正在尝试在查询中使用discriminator列,这是非法的。

相反,请直接在PersonRequester上执行查询,并从megaPredicate中移除违规条款。