簡體   English   中英

如何在 spring jpa 中組合 4 個表(查詢)

[英]how to combine 4 tables in spring jpa (Query)

我有一個數據表叫RoomBoy,數據是這樣的

"room": {
            "id": 1,
            "roomId": 40,
            "floor": "1",
            "roomNumber": "107",
            "condition": null,
            "status": "Waiting"
        },
        "bedType": {
            "id": 1,
            "bedTypeName": "Twin Bed"
        },
        "roomCategory": {
            "id": 35,
            "categoryName": "Superior"
        },
        "guestName": "RIKO JANUAR"
    }

我還有一個名為 RoomBoyDetail 的表中的數據

    {
        "id": 1,
        "roomBoyId": 1,
        "productId": 3,
        "productName": {
            "id": 3,
            "productName": "HORS D’OEUVRE VARIE"
        },
        "qty": 3,
        "description": null
    },
    {
        "id": 2,
        "roomBoyId": 1,
        "productId": 4,
        "productName": {
            "id": 4,
            "productName": "CREAM OF VEGETABLES SOUP"
        },
        "qty": 2,
        "description": null
    },
    {
        "id": 3,
        "roomBoyId": 1,
        "productId": 5,
        "productName": {
            "id": 5,
            "productName": "RAVIOLI AU JUS"
        },
        "qty": 2,
        "description": null
    }

我想組合這兩張表,具有相同的 id(來自 RoomBoy)和 roomBoyId(來自 RoomBoyDetail)。 我的代碼是這樣的

@Query("select new com.acs.pms.model.ObjekRoomBoyDetail(a,b.bedType,b.roomCategory,c.guestName,d.productName,d.qty,d.description) from RoomBoy a left outer join RoomMaster b on a.roomId = b.id "
        + "left outer join ReservationDetail c on a.roomNumber = c.roomNumber where c.checkinStatus = true and c.checkoutStatus = false "
        + "left outer join RoomBoyDetail d on a.id = d.roomBoyId")
        Page<ObjekRoomBoyDetail> getAllDetail(
        Pageable paging);

我有錯誤的意外令牌:在第 1 行附近離開

在 where 子句之后有一個左外連接:

select new com.acs.pms.model.ObjekRoomBoyDetail(a,b.bedType,b.roomCategory,c.guestName,d.productName,d.qty,d.description) 
from RoomBoy a 
left outer join RoomMaster b on a.roomId = b.id 
left outer join ReservationDetail c on a.roomNumber = c.roomNumber 
where c.checkinStatus = true and c.checkoutStatus = false 
left outer join RoomBoyDetail d on a.id = d.roomBoyId

它應該是

select new com.acs.pms.model.ObjekRoomBoyDetail(a,b.bedType,b.roomCategory,c.guestName,d.productName,d.qty,d.description) 
from RoomBoy a 
left outer join RoomMaster b on a.roomId = b.id 
left outer join ReservationDetail c on a.roomNumber = c.roomNumber 
left outer join RoomBoyDetail d on a.id = d.roomBoyId
where c.checkinStatus = true and c.checkoutStatus = false 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM