[英]Complex hibernate query using criteria API
我正在尝试使用条件API编写复杂的查询。 我可以为此提供一些帮助。
我有3类,资产,资产组件和任务。 Task类与AssetComponent的关系为1到M,AssetComponent与Asset的关系为1到M。 我需要找到所有与某些任务相关联的资产(该资产应该是唯一列表)(该任务具有一个组件,并且该组件知道它所连接的资产)。
这就是我到目前为止
public List<Asset> retrieveTask(Project project, boolean assigned) {
DetachedCriteria subquery = DetachedCriteria.forClass(Task.class);
subquery.add(Restrictions.eq("project", project));
if (assigned) {
subquery.add(Restrictions.isNotNull("assignedTo"));
} else {
subquery.add(Restrictions.isNull("assignedTo"));
}
subquery = subquery.createCriteria("component");
subquery.add(Restrictions.isNotNull("asset"));
Criteria criteria = super.createCriteria();
criteria.add(Subqueries.in("id", subquery));
return criteria.list();
}
分离的查询应返回为其分配了资产并属于Give项目的所有任务。 现在,我需要查看所有这些任务的独特资产。
感谢您的协助。
干杯
在黑暗中拍了一下,但这对您有何作用:
public List<Asset> retrieveTask(Project project, boolean assigned) {
DetachedCriteria subquery = DetachedCriteria.forClass(Task.class);
subquery.add(Restrictions.eq("project", project));
DetachedCriteria assetCriteria = subquery
.createCriteria("component")
.createCriteria("asset").setProjection(Projections.groupProperty("id"));
Criteria criteria = super.createCriteria();
if(assigned) {
criteria.add(Subqueries.propertyIn("id", subquery));
}
else {
criteria.add(Subqueries.propertyNotIn("id", subquery));
}
return criteria.list();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.