Dúvida com consulta Hibernate

Olá a todos,

Tenho as seguintes classes:

shelf

public class Shelf implements Serializable {

    @Id()
    @Column(name = "IP")
    private String ip;
    @Column(name = "NAME")
    private String name;
    @ManyToOne()
    private City city;
    @ManyToOne
    private ShelfModel shelfModel;
    @Temporal(TemporalType.DATE)
    @Column(name = "DATE_INSERT", nullable = true)
    private Calendar dateInsert;

Unit

@Entity
@Table(name = "UNIT")
public class Unit implements Serializable {

    @EmbeddedId()
    private UnitPK id;
    @Column(name = "NAME", nullable = true)
    private String name;
    @Column(name = "SUPPLIER_BUILD_STATE", nullable = true)
    private String supplierBuildState;
    @Column(name = "ESW", nullable = true)
    private String esw;
    @Column(name = "STATUS", nullable = true)
    private String status;
    @Column(name = "LAST_UPDATE", nullable = true)
    @Temporal(TemporalType.DATE)
    private Calendar lastUpdate;

Notem que minha chave primária para a classe Unit é uma chave composta.

Preciso realizar a seguinte consulta:

select shelf_ip from unit where slot = 19 and esw like 'ipsm%' group by shelf_ip

gostaria de saber como fazer isto com o criteria fazendo uma consulta que retorne as entidades Shelf

Att,

cade o atributo slot?

na classe UnitPK

@Embeddable
public class UnitPK implements Serializable {

    @ManyToOne()
    private Shelf shelf;
    private int slot;

Desculpe, não tinha percebido que tinha uma cláusula grou by …

Tenho a impressão que não é possível executar a consulta nestes parâmetros usando Criteria.

Para este tipo de consulta, creio q deve usar uma Query.