0

抽出が次のような 2 つのエンティティがあります。

public class Visita {
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="pdv_uid")
    private PuntoDeVenta pdv;
}

public class PuntoDeVenta {
    private Integer idclient;

    private String zona;

    @ManyToOne
    @JoinColumn(name="pdv_categoria_uid", nullable=true)
    private PuntoDeVentaCategoria categoria;
}

public class PuntoDeVentaCategoria {
    private String descripcion;
}

私は、さまざまなフィールドで制限を加えようとしていますが、機能するものもあれば、機能しないものもあります。

このルート基準では:

Criteria criteria =   sessionFactory.getCurrentSession().createCriteria(Visita.class).createAlias("pdv", "pdv");

"PuntoDeVenta" と "PuntoDeVentaCategoria" (createAlias の有無にかかわらず) のさまざまなフィールドを制限しようとすると、「プロパティを解決できませんでした」という例外が発生します。次に例を示します。

Criteria criteria =   sessionFactory.getCurrentSession().createCriteria(Visita.class).createAlias("pdv", "pdv").add(Restrictions.eq("pdv.categoria.descripcion", "example"));

前もって感謝します

4

1 に答える 1

1

もう 1 行追加します。

Criteria criteria =   sessionFactory.getCurrentSession().createCriteria(Visita.class).createAlias("pdv", "pdv");

criteria.createAlias("pdv.categoria", "categoria");

今では以下の方法で動作します

criteria.add(Restrictions.eq("categoria.descripcion", "example"));
于 2014-10-08T09:51:40.967 に答える