Java JPA查询-如何获得特定的结果集?
在基于JPA2/Hibernate/Oracle+Spring+Wicket的应用程序中,我使用以下模型:Java JPA查询-如何获得特定的结果集?,java,database,jpa,jpa-2.0,Java,Database,Jpa,Jpa 2.0,在基于JPA2/Hibernate/Oracle+Spring+Wicket的应用程序中,我使用以下模型: public class Item { private String name; private Set<Application> apps; private ... } public class Application { private String applicant; private Item item; private Status status; p
public class Item {
private String name;
private Set<Application> apps;
private ...
}
public class Application {
private String applicant;
private Item item;
private Status status;
private ...
}
公共类项目{
私有字符串名称;
私人设置应用程序;
私有的
}
公共类应用程序{
私人字符串申请人;
私人物品;
私人身份;
私有的
}
项目和应用程序之间的映射是,每个项目都有许多应用程序,每个应用程序只指向一个项目
现在我想搜索满足一组复杂条件的应用程序,如果结果集是一组成对的你能给我推荐一种方法吗?我的第一个想法是首先查询pairs
JOIN
来表达应用程序上的条件),查询对是唯一的方法-这就是关系数据库的工作方式。我建议使用带有元组和子查询的JPA2条件查询。(伪代码)行中的某些内容:
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery crit=cb.createTupleQuery();
子查询
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> crit = cb.createTupleQuery();
Subquery<Application> subquery = cb.subquery(Application.class);
subquery.where(...);
subquery.correlate(...);
crit.select(cb.tuple(cb.from(Item.class), subquery);