我有三个实体:
User (id, name, organizations[], ...)
Organization (id, name, plants[], ...)
Plant (id, name ...)
User.organizations和Organization.plants是ManyToMany FetchType.LAZY关联
现在,我有一个"植物"和一个"用户"宾语。我想知道工厂对象是否在与用户关联的一个(或多个)组织的工厂集合中。
是否可以使用JPA API或至少Hibernate来实现这一点而无需获取所有集合,并且没有自定义查询?
例如,如果一个用户拥有2000个组织,并且每个组织可以包含1000个工厂,那么它可能是一个真正的性能杀手来迭代集合。
答案 0 :(得分:1)
要获得具有特定工厂组织的所有用户对象,您可以像这样执行JPQL
SELECT u FROM User u JOIN u.organizations o JOIN o.plants p WHERE p.id = :myPlantId
然后查看用户所需的内容。或者,您可以按特定用户约束
SELECT u FROM User u JOIN u.organizations o JOIN o.plants p WHERE u.id = :myUserId AND p.id :myPlantId