所以我在两个不同的实体中得到了很多关系。一个有另一个列表,另一个列有第一个列表。我的问题是如何使查询占用实体的一个字段+集合。例如,教授和项目有很多相关,如何获得所有教授的名字+他们参与的项目?如果你有深刻和广泛的想法分享请。感谢
答案 0 :(得分:0)
您可以使用JP QL预测,选择教授的名称以及与教授关联的项目实体的属性。使用您的示例:
@Entity
public class Professor {
private Long id;
private String name;
private Collection<Projects> projects;
...
}
@Entity
public class Project {
private Long id;
private String status;
private Collection<Professor> professors;
...
}
示例数据:
你的教授表有两排:
1个马克
约翰二书
您的项目表有4行:
1。一种DELAYED
2个B已完成
3 C ON-TRACK
4 d COMPLETED
JOIN表(第一列是教授ID,第二列是项目ID):
1个
1个2
2个3
2个4
您的JPA查询将如下:
SELECT prof.name, proj.name, proj.status FROM Professor prof JOIN prof.projects proj
然后结果将是:
标记的延迟
标记B已完成
约翰·C·ON-TRACK
约翰d COMPLETED
但是,如果您尝试在教授名称及其项目集合上使用投影,则在JP QL中无法实现。 JP QL仅允许SELECT子句中的单值路径表达式。
示例:这不是有效的JP QL查询,因为prof.projects是一个集合值路径表达式。
SELECT prof.name, prof.projects FROM Professor prof