querydsl over collections在子句中

时间:2015-10-15 10:29:48

标签: java querydsl

我在集合上使用querydsl。 我正在尝试获取另一个列表中包含的所有元素。

public class Parent {
   private List<Child>;
}

public class Child {
   private String key;
   private String value;
}

由于Child对象的具体列表(List<Child> lovedChilds),我需要选择的每个父对象都包含在lovedChilds中。

List<Parent> parents = ...;
for (Parent parent in parents)
{
    select
       from (child, parent.childs)
       where lovedChilds contains a lovedChild 
         where child.getKey.equals(lovedChild.getKey);
}

1 个答案:

答案 0 :(得分:0)

由于你有一个 n:m关系,你应该在某个地方有一个交叉表。 我认为parent2child的列为parentchild(相应ID列的外键)。

只需执行加入:

select * from parent join parent2child join child where child.key in lovedChildren

如果您只想获取一次父对象,可以添加group bydistinct