Hibernate @Where отсутствует в JOIN FETCH - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть следующие 3 объекта: Item, Warehouse и ItemWarehouse, которые имеют item_id и warehouse_id.Я установил отношения @OneToMany и @ManyToOne для 3 таблиц.Кроме того, я использую мягкое удаление, поэтому у каждой сущности есть @Where(clause = "deleted_flag = 0").

. Я написал запрос для извлечения всех элементов, который выглядит следующим образом:

SELECT i FROM Item i
JOIN FETCH i.itemWarehouses iw
JOIN FETCH iw.warehouse

JPQL преобразуется в этуоператор на консоли:

select
    // fields
from item item0_ 
inner join item_warehouse itemwareho1_ on item0_.id=itemwareho1_.item_id and ( itemwareho1_.deleted_flag = 0) 
inner join warehouse warehouse2_ on itemwareho1_.warehouse_id=warehouse2_.id 
where ( item0_.deleted_flag = 0)

Видно, что первое inner join и последнее where предложение содержат deleted_flag = 0, а второе inner join - нет.Почему это так?

Мои сущности определены следующим образом

@Entity
@Table(name = "item")
@Where(clause = "deleted_flag = 0")
class Item

@Entity
@Table(name = "item_warehouse",)
@Where(clause = "deleted_flag = 0")
class ItemWarehouse

@Entity
@Table(name = "warehouse")
@Where(clause = "deleted_flag = 0")
class Warehouse
...