Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA连接表上带条件的独立内部连接_Java_Sql_Oracle_Jpa_Jpql - Fatal编程技术网

Java JPA连接表上带条件的独立内部连接

Java JPA连接表上带条件的独立内部连接,java,sql,oracle,jpa,jpql,Java,Sql,Oracle,Jpa,Jpql,下面我有两张表: @Entity @Table(name="COLLEGE") public class College { private Long collegeId; private List<Student> students; @Id @Column(name = "COLLEGE_ID") public Long getCollegeId() { return this.collegeId; } public void setCollegeId(f

下面我有两张表:

@Entity
@Table(name="COLLEGE")
public class College {
private Long collegeId;
private List<Student> students;

@Id
@Column(name = "COLLEGE_ID")
public Long getCollegeId() {
       return this.collegeId;
   }

public void setCollegeId(final Long collegeId) {
       this.collegeId= collegeId;
   }
 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "college")
 @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public List<Student> getStudents() {
        if (this.students== null) {
            this.students= new ArrayList<>();
        }
        return this.students;
    }
public void setStudents(List<Student> students){
     this.students = students
    }
}
我想获取
学院
对象,其中包含特定
学生
。SQL查询如下所示:

select *
from COLLEGE c
inner join STUDENT s on c.COLLEGE_ID= s.collegeId
where c.COLLEGE_ID=12345 and s.DEPARTMENT="ENGINEERING";
到目前为止,我已经尝试了下面的JPA查询,但它返回了多个
College
对象

SELECT DISTINCT c
FROM COLLEGE c
INNER JOIN c.students s
where c.collegeId= :collegeid and s.department = :department
如何返回一个带有
学生列表的
学院
对象,以及经过筛选的
部门


注意:我无法更改此处使用的实体对象。

尝试使用此查询,使用
JOIN FETCH
而不是
internal JOIN

SELECT DISTINCT c FROM College c 
       JOIN FETCH c.students s
            WHERE c.collegeId= :collegeid 
                  AND s.department = :department

您使用的是哪种数据库管理系统?Oracle是此处使用的数据库,您不能使用。学院的学生就是学院的学生。都是。如果你写的话,javadoc就是这样的:“学院的学生”。如果你只想要其中的一部分,那么选择它们:
select c,s from College c join c.students s s where c.collegeId=:collegeId and s.department=:department
@jbnize我怎么能用
JPA
的方式来做呢?我建议的“不是用JPA的方式”是什么?这是一个JPQL查询。我已经在评论中发布了解决方案,但是谢谢你的帮助。我接受你的回答作为解决办法。
SELECT DISTINCT c FROM College c 
       JOIN FETCH c.students s
            WHERE c.collegeId= :collegeid 
                  AND s.department = :department