假设我有一个如下的实体:
public class Class1 {
private long id;
...
private List<OneRandomObject> list;
}
在JPA中,使用Criteria查询或Named查询是否可以比较实体的列表?
类似于以下的Named查询:
select c from Class1 c where c.list=:list
使用 Criteria API 进行查询同样有效。
假设我有一个如下的实体:
public class Class1 {
private long id;
...
private List<OneRandomObject> list;
}
在JPA中,使用Criteria查询或Named查询是否可以比较实体的列表?
类似于以下的Named查询:
select c from Class1 c where c.list=:list
我不确定这是否符合您的情况,但这样做是否可以实现您想要的功能?
public List<Class1> matchList(List<OneRandomObject> other) {
// ...
String jpql = "select c from Class1 c where c.list in (:other)"
// ...
}
Criteria crit = session.createQuery(Class1.class);
Conjunction junction = Restrictions.conjunction();
for(OneRandomObject o: matches) {
junction.add(Restrictions.propertyEq("list", o);
}
crit.add(junction);
for(Class1 c1 : class1List)
{
List<OneRandomObject> list = c1.getList();
// compare the list with you param
// remove if not match
}
CollectionUtils
可以帮助缓解一些集合操作的痛点。例如,我使用 CollectionUtils.subtract(list, otherList).isEmpty()
来比较集合。 - Dormouse