如何使用Spring MVC在Hibernate中进行连接查询

时间:2017-12-02 15:24:16

标签: mysql spring hibernate

我有两张桌子。 :机场,FlightSchedule。

他们彼此有一两对多的关系。

下面是hibernate数据文件。

Airport.java:

public class Airport implements java.io.Serializable {

    private Integer airportId;
    private String airportName;
    private String airportCountry;
    private String airportCity;
    private Set<FlightSchedule> depFlightSchedule = new HashSet<FlightSchedule>(0);
    private Set<FlightSchedule> arrFlightSchedule = new HashSet<FlightSchedule>(0);

}

FlightSchedule.java:

public class FlightSchedule implements java.io.Serializable {

    private Integer flightscheduleId;
    private Date depDay;
    private Date depTime;
    private Date arrDay;
    private Date arrTime;
    private Double flightTime;
    private Integer price;
    private Set<BoardingPass> boardingPasses = new HashSet<BoardingPass>(0);

    private Airplane airplane;
    private Airport depAirport;
    private Airport arrAirport;

} 

在FlightSchedule,他们必须与机场有两个关系。因为他们需要“出发机场信息”和“到达机场信息”。

所以,如果我得到两个字符串输入(出发机场名称,到达机场名称),我想制作连接表(FlightSchedule X Airport)并打印所有信息。

例如,如果我有两个输入'Korea'和'Austrailia',那么我想打印有关离境韩国,到达Austrailia的信息。

喜欢这个! :

departureDate | departureAirport |到达日期|到达机场

2017-12-01 |仁川国际机场| 2017-12-10 |悉尼国际机场

- 出发日期,到达日期来自'FlightSchedule'表。

- departureAirport名称,arrivalAirport名称来自'Airport'表。

实际上,我在mysql上试过这个:

SELECT * FROM flight_schedule as f

内部加入机场

在f.dep_airport_id =(从机场选择机场,其中airport.country ='韩国')

和f.arr_airport_id =(从机场选择机场,其中airport.country ='Austrailia')

但这不是我想要的。

有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

现在您想要在机场与机场同时具有两个不同值的条件下执行联接,因此这是不可能的。对于每种情况,您必须为此表进行两次连接。

SELECT * FROM flight_schedule as f

inner join airport a1

on f.dep_airport_id=(select id from airport where a1.country='korea')

inner join airport a2

on f.arr_airport_id=(select id from airport where a2.country='Austrailia')