Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate: как построить запрос


Автор: TopaZ 11.1.2011, 00:55
Доброго времени суток!

Пытаюсь получить иерархию из 3 сущностей связанных друг с другом ассоциацией OneToMany.
Section.java 
Код

public class Section {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id", unique = true, nullable = false)
    private Long id;

    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "section", cascade = CascadeType.ALL)
    private List<Block> blocks;
}

Код

public class Block {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id", unique = true, nullable = false)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @ForeignKey(name = "section_fk")
    @JoinColumn(name = "section_fk", nullable = false)
    private Section section;

    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "block", cascade = CascadeType.ALL)
    private List<Element> elements;
}


Код

public class Element{
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id", unique = true, nullable = false)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @ForeignKey(name = "block_fk")
    @JoinColumn(name = "block_fk", nullable = false)
    private Block block;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "description")
    private String description;

    }


Так вот мне нужно выбрать на основе некоторого критерия определенные объекты Element, но сгруппированные в объекты Block, которые в свою очередь сгруппированы в соответсвующих им объектах Section.
Вроде бы ничего сложного. Но когда я получаю List<Section> в результате запроса и начинаю по нему итерировать, то вложенный список List<Block> содержит все связанные с текущей секцией объекты, а не только те, кот. подпадают под условие выборки.

Как можно реализовать подобный запрос?

Автор: emmanuil 20.1.2011, 08:57
Нужно показать что делаешь, как пытаешься.
Ясно дело что будут все блоки, так как они по маппингу должны быть все для указанной секции. smile Начинай с низу вверх например, либо в маппинге условие для коллекции задать можно. Лучше выборку пусть сервер БД сделает, а не самому итерировать.
Напиши что ты хочешь получить, какую структуру объектов и что значит сгруппированые в блок?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)