Запрос соединения в спящем режиме без прямого подключения - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующий класс сущности

public class Customer {
    @Id
    private int id;
    @Column(name = "CID")
    private String cid;
}


public class Alccs {
    @Id
    private int vid;
//    @Column(name = "CID")
//    private String cid;

    @ManyToOne
    @JoinColumn(name = "CID", referencedColumnName = "CID")
    private Customer customer;
}


public class Rtwo {
    @Id
    private int jobNo;

    @ManyToOne
    @JoinColumn(name = "CID", referencedColumnName = "CID")
    private Customer customer;
}




public class RTwoCycle {
    @Id
    private int cycleJobNo;
    @Column
    private int vid;

    @ManyToOne
    @JoinColumn(name = "JobNo", referencedColumnName = "JobNo")
    private TblRtwo tblRtwo;

}

Как мне написать запрос, например, используя HQL и criteria

select top 20 * from RTwoCycle rtCycle join Alccs al on rtCycle.vid = al.vid;

Для HQL я попробовал следующее

from TBLRTwoCycle rtCycle join TBLAL al on rtCycle.vid = al.vid

но получает QuerySyntaxException: Path expected for join! ошибка

а про критерии я не знаю как это сделать

как это сделать ??

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018
  1. from RTwoCycle as rtCycle inner join Alccs as al with rtCycle.vid = al.vid
0 голосов
/ 18 сентября 2018

Для HQL достаточно простого объединения и on clause достаточно

from table1 as t1 inner join table2 as t2 on t1.vid=t2.vid

или

from table1 as t1, table2 as t2 where t1.vid=t2.vid

для критериев Restriction.sqlRestriction является решением этой проблемы

session.createCriteria(Class1,"c1")
        .createAlias("class2", "c2")
        .add(Restrictions.sqlRestriction("c1.vid=c2.vid")
0 голосов
/ 10 сентября 2018

Для версий JPA и Hibernate старше 5.1 требуется определенное отношение для объединения двух сущностей в запросе JPQL. Это часто приводит к каскадным операторам JOIN для пересечения графа отношений между сущностями или к утверждению, что JOIN для сущностей невозможен с JPQL, если между ними нет взаимосвязи.

В Hibernate 5.1 введены явные объединения несвязанных сущностей. Синтаксис очень похож на SQL и позволяет определять критерии JOIN в операторе ON.

Подробнее

...