1

我的情况:A 有一个名为 AuditDetail 的数据表。此表与另一个表 AuditHead 处于 ManyToOne 连接中。我在 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);

但我绝对不确定我该怎么做。

每一个帮助表示赞赏!问候!

4

0 回答 0