这是我的架构:
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 deleted_at is NULL
,但子表(event_ticket_types)没有where条件
我做错了在哪里?
答案 0 :(得分:1)
你没有显示@Where注释的位置,但我猜他们只是在课堂级别。尝试将@Where注释添加到上面的@OneToMany方法中。
当您直接选择实体时,注释在实体级别工作,但如果您希望它适用于连接,则在关系方法上也需要它。