瞬态 属性 导致 org.hibernate.QueryException:无法解析 属性:severidadeRecente of:br.com.timbrasil.bluemonster.modelo.Csr

Transient property causes org.hibernate.QueryException: could not resolve property: severidadeRecente of: br.com.timbrasil.bluemonster.modelo.Csr

我正在尝试使用 Criteria API 来获得按瞬态 severidadeRecente 属性.

排序的 List<Csr>

我正在使用的实体和关系:

@Entity
@Table(name = "csr")
public class Csr implements Serializable {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "csr")
    private List<CsrSeveridadeLog> severidadeLogList;

    //Used to get and set the most recent Severidade
    @Transient
    private CsrSeveridadeLog severidadeRecente;

    public CsrSeveridadeLog getSeveridadeRecente() {
        Calendar compare = null;
        CsrSeveridadeLog recente = null;

        for (CsrSeveridadeLog log : severidadeLogList) {
            if (compare == null) {
                compare = log.getData();
                recente = log;
            }
            if (log.getData().after(compare)) {
                recente = log;
            }
        }
        return recente;
    }

我正在使用以下条件查询:

Criteria criteria = session.createCriteria(Csr.class,"csr");
if ("severidadeRecente".equals(filtro.getPropriedadeOrdenacao())) {
    criteria.createAlias("csr.severidadeRecente", "severidadeRecente");
}

filtro.getPropriedadeOrdenacao() 来自客户端。

但我得到以下异常:

Caused by: org.hibernate.QueryException: could not resolve property: severidadeRecente of: br.com.timbrasil.bluemonster.modelo.Csr

我该如何解决?我需要根据我的实体拥有的 List 来订购我的 table,并获取该列表中的最新记录。

您是否在 Csr class 中使用正确的 getter 和 setter 提交了 severidadeRecente

更新:

作为@ChssPly76 said:

You can't use nested paths directly in Criteria API (unlike HQL). Instead, you need to create nested criteria instances or define aliases on each "entity.property" pair starting with the first non-root entity

所以尝试做这样的事情:

criteria.createAlias("csr", "c")
.createAlias("c.severidadeRecente", "severidadeRecente")