Hibernate. Запрос на выборку дочерней сущности и нескольких полей основной

Появился такой вопрос: работая с hibernate 3.3.0 наткнулся на ситуацию, когда мне необходимо из двух таблиц, связанных one-to-many, взять из основной таблицы некоторое количество полей и все связанные записи из дочерней. Что б было понятнее приведу конкретный пример на двух сущностнях. Есть основная сущность Получатель "recipient":

@Entity
@Table(name = "recipient")
@JsonFilter(value = "recipientsFilter")
public class POJORecipient implements POJO {

    private static final long serialVersionUID = 4436819032452218525L;

    @Id
    @Column
    private long id;
    @Version
    @Column
    private long version;
    @Column(name = "client_id")
    private long clientId;
    @Column
    private String inn;
    @Column
    private String name;
    @Column(name = "rcpt_country_code")
    private String rcptCountryCode;
    @Column(name = "rcpt_passp_ser")
    private String rcptPasspSer;
    @Column(name = "rcpt_passp_num")
    private String rcptPasspNum;
    @OneToMany(mappedBy = "recipient", fetch = FetchType.LAZY)
    @JsonManagedReference
    private Set<POJORequisite> requisites = new HashSet<>();

    public POJORecipient(){}

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public long getVersion() {
        return version;
    }

    public void setVersion(long version) {
        this.version = version;
    }

    public long getClientId() {
        return clientId;
    }

    public void setClientId(long clientId) {
        this.clientId = clientId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getInn() {
        return inn;
    }

    public void setInn(String inn) {
        this.inn = inn;
    }

    public String getRcptCountryCode() {
        return rcptCountryCode;
    }

    public void setRcptCountryCode(String rcptCountryCode) {
        this.rcptCountryCode = rcptCountryCode;
    }

    public String getRcptPasspSer() {
        return rcptPasspSer;
    }

    public void setRcptPasspSer(String rcptPasspSer) {
        this.rcptPasspSer = rcptPasspSer;
    }

    public String getRcptPasspNum() {
        return rcptPasspNum;
    }

    public void setRcptPasspNum(String rcptPasspNum) {
        this.rcptPasspNum = rcptPasspNum;
    }

    public Set<POJORequisite> getRequisites() {
        return requisites;
    }

    public void setRequisites(Set<POJORequisite> requisites) {
        this.requisites = requisites;
    }
}

и дочерняя – реквизиты этого получателя, "requisites":

@Entity
@Table(name = "requisites")
public class POJORequisite implements POJO {

    private static final long serialVersionUID = -35864567359179960L;

    @Id
    @Column
    private long id;
    @Version
    @Column
    private long version;
    @Column
    private String bic;
    @Column
    private String bill;
    @Column
    private String comments;
    @Column
    private String note;
    @ManyToOne
    @JoinColumn(name = "recipient_id")
    @JsonBackReference
    private POJORecipient recipient;

    public POJORequisite(){}

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public long getVersion() {
        return version;
    }

    public void setVersion(long version) {
        this.version = version;
    }

    public String getBic() {
        return bic;
    }

    public void setBic(String bic) {
        this.bic = bic;
    }

    public String getBill() {
        return bill;
    }

    public void setBill(String bill) {
        this.bill = bill;
    }

    public String getComments() {
        return comments;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public POJORecipient getRecipient() {
        return recipient;
    }

    public void setRecipient(POJORecipient recipient) {
        this.recipient = recipient;
    }
}

И вот для примера я хочу выбрать из получателей только имя и все связанные реквизиты, тоесть на выходе должен получиться лист объектов класса POJORecipient, где у каждого объекта заполнены поле name и коллекция объектов POJORequisite. Я хочу: либо узнать как это сделать (или с помощью HQL, или с помощью Criteria API, но второй вариант предпочтительнее), либо узнать, что этого сделать невозможно в hibernate вообще, либо узнать, что эта возможность появилась в более поздних версиях, так же, очень желательно, с примером того, как это сделать. Над этим вопросом я бьюсь уже несколько месяцев и буду безмерно признателен за любую помощь, все уточнения и советы активно приветствуются. Заранее спасибо!!!


Ответы (0 шт):