запрос на выбор режима гибернации из дочерней таблицы - PullRequest
0 голосов
/ 26 июня 2018

Я довольно новичок в спящем режиме. У меня есть две таблицы, имеющие отношение один ко многим . Две таблицы:

public class Pashmina implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "sq_pashmina_id")
    @SequenceGenerator(name = "sq_pashmina_id", sequenceName = "sq_pashmina_id")
    @Column(name = "PASHMINA_ID")
    private int pashminaId;

    @Column(name = "PASHMINA_NAME")
    private String pashminaName;

    @Column(name = "PRICE")
    private double price;

    @Column(name = "ADDED_AT", insertable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date addedAt;

    @Column(name = "CATEGORY")
    private String category;

    @Column(name = "ENABLED", insertable = false)
    private Character enabled;

    @OneToMany(mappedBy = "colourId", fetch = FetchType.EAGER)
    private Set<PashminaColour> pashminaColor  = new HashSet<PashminaColour>();

    @OneToMany(mappedBy = "imageId", fetch = FetchType.EAGER)
    private Set<Image> images  = new HashSet<Image>();

    @OneToMany(mappedBy = "descriptionId", fetch = FetchType.EAGER)
    private Set<Description> descriptions  = new HashSet<Description>();

    //getter and setter method

Это родительский класс, и он имеет отношение один ко многим с таблицей изображений

public class Image implements Serializable {
    @Id
    @Column(name = "IMAGE_ID")
    private int imageId;

    @Column(name = "IMAGE_NAME")
    private String imageName;

    @JoinColumn(name = "PASHMINA_ID", referencedColumnName = "PASHMINA_ID")
    @ManyToOne
    private Pashmina pashmina;

Теперь я хочу выбрать imagenames из Image класса, используя идентификатор родительского класса (то есть: pashminaId)

например:

ВЫБЕРИТЕ IMAGE_NAME ИЗ TBL_IMAGE, ГДЕ PASHMINA_ID = 'some_digit';

Как я могу передать pashminaId в класс изображения, так как pashminaId не имеет только создание объекта класса Parent Pashmina.

Итак, как мне этого добиться в спящем режиме?

Дайте мне знать, если вы меня не понимаете.

Спасибо! Надеясь на положительный ответ.

1 Ответ

0 голосов
/ 26 июня 2018

Поскольку Hibernate обрабатывает объекты вместо таблиц SQL, вы можете просто получить доступ к объекту pashmina из своего объекта image, и в своем запросе вы будете обрабатывать объекты Java / POJO, поэтому вы можете получить к нему доступ через Image.pashmina.pashminaId.

Таким образом, вы можете написать следующий запрос:

String hql = "select I.imageName FROM Image I WHERE I.pashmina.pashminaId = 10";
Query query = session.createQuery(hql);
List results = query.list(); 
...