假设我有一个这样的实体:
public class Class1 {
private long id;
...
private List<OneRandomObject> list;
}
是否可以在 JPA 中使用标准查询或命名查询按列表比较实体?
类似于命名查询:
select c from Class1 c where c.list=:list
使用条件 api 的查询也可以正常工作。
假设我有一个这样的实体:
public class Class1 {
private long id;
...
private List<OneRandomObject> list;
}
是否可以在 JPA 中使用标准查询或命名查询按列表比较实体?
类似于命名查询:
select c from Class1 c where c.list=:list
使用条件 api 的查询也可以正常工作。
我不确定这是否符合您的情况,但这不是您想要的吗?
public List<Class1> matchList(List<OneRandomObject> other) {
// ...
String jpql = "select c from Class1 c where c.list in (:other)"
// ...
}
我明白你现在在问什么。在 Hibernate Criteria API 中这样的东西怎么样?
Criteria crit = session.createQuery(Class1.class);
Conjunction junction = Restrictions.conjunction();
for(OneRandomObject o: matches) {
junction.add(Restrictions.propertyEq("list", o);
}
crit.add(junction);
据我所知,不可能将整个集合过滤为属性。
也许您可以尝试the list
根据您的条件获取所有 Class1,并过滤结果如下:
for(Class1 c1 : class1List)
{
List<OneRandomObject> list = c1.getList();
// compare the list with you param
// remove if not match
}