这是我的模式:
活动详情:
-id(主键)
-姓名
-说明
活动门票类型:
-id(主键)
-事件id(引用id(事件详细信息)
-票证名称
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();
然后我将实体和数据映射到。
在查询日志中-我看到父表(event_details)使用where条件执行查询,即
where deleted_at is NULL
,但子表(event_ticket_types)没有where条件我哪里做错了?
最佳答案
您没有显示@where注释在哪里,但我猜它们都只是在类级别。尝试将@Where注释添加到上面的@OneToMany方法中。
当您直接选择实体时,注释在实体级别工作,但如果您希望它用于联接,则在关系方法上也需要它。