我的情况:A有一个名为AuditDetail的数据表。此表与ManyToOne连接,另一个表为AuditHead。我在Primefaces数据表中显示数据。我的问题是排序和过滤。如果我想在AuditHead表中对字段进行排序,我得到一个错误:没有这样的字段异常。 相关代码:
public List<AuditDetail> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<AuditDetail> cq = cb.createQuery(AuditDetail.class);
Root<AuditDetail> from = cq.from(AuditDetail.class);
CriteriaQuery<AuditDetail> select = cq.select(from);
它与AuditDetail字段完美配合,但我不知道如何从AuditHead到达字段。如果我使用NamedQueries,我可以简单地说auditDetail.headId,但是当我使用CriteriaQuery时如何获得AuditHead字段? 之前我使用过NamedQueries,然后这段代码完美无缺:
filterBy="#{log.headId.tableName}" sortBy="#{log.headId.tableName}"
我在这里,因为我不知道了,我想尝试了一切。例如:
Fetch<AuditDetail, AuditHead> fetch = from.fetch(AuditDetail_.headId, JoinType.LEFT);
但我完全不确定如何做到这一点。
每一个帮助表示赞赏! 此致!