@Where注释在子表上的hibernate中

时间:2016-11-30 12:52:37

标签: java mysql hibernate

这是我的架构:

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条件

我做错了在哪里?

1 个答案:

答案 0 :(得分:1)

你没有显示@Where注释的位置,但我猜他们只是在课堂级别。尝试将@Where注释添加到上面的@OneToMany方法中。

当您直接选择实体时,注释在实体级别工作,但如果您希望它适用于连接,则在关系方法上也需要它。