2016-11-30 23 views
0

這是我的架構:@Where註解

event_details: - ID(PK) - 姓名 - 描述

event_ticket_types: - ID(PK) - EVENT_ID(參考ID(event_details) - ticket_name

EventDetail 

//bi-directional many-to-one association to EventTicketType 
    @OneToMany(mappedBy="eventDetail", cascade = CascadeType.ALL) 
    private Set<EventTicketType> eventTicketTypes; 
我EventDetail實體

,我已經加入@Where(clause = "deleted_at is NULL") 我也在EventTicketType中添加了相同的內容

這就是我如何獲取服務中的數據。

EventDetail eventDetail = eventDetailRepository.getById(eventId); 
Set<EventTicketType> eventTicketTypes = eventDetail.getEventTicketTypes(); 

然後我映射實體和dto。

在查詢日誌 - 我看到父表(event_details)執行與WHERE條件即where deleted_at is NULL,但子表(event_ticket_types)沒有一個where條件

它在哪裏,我做錯了查詢?

回答

1

您沒有顯示@Where註釋的位置,但我猜測它們都只在課堂級別。嘗試將@Where註釋添加到上面的@OneToMany方法中。

當您直接選擇實體時,註釋在實體級別上工作,但如果您希望它用於連接,則您在關係方法上也需要註解。

+0

This Works。謝謝 – nirvair