Hibernate将两个没有关系的HQL查询组合起来

Hibernate将两个没有关系的HQL查询组合起来,hibernate,hql,Hibernate,Hql,我正在使用Hibernate,这是我的场景: 我有两个实体,它们之间没有任何关系(唯一存在的关系是逻辑关系,这就是问题所在)。 这两个实体类似于Student和FinalExam 学生和考试是这样的: class Student { private String name; private String surname; private int age; } class FinalExam { private String candidateName;

我正在使用Hibernate,这是我的场景:
我有两个实体,它们之间没有任何关系(唯一存在的关系是逻辑关系,这就是问题所在)。
这两个实体类似于Student和FinalExam

学生和考试是这样的:

class Student {
    private String name;
    private String surname;
    private int age;
}

class FinalExam {
    private String candidateName;
    private String candidatesurname;
    private int mark; 
}
我想创建一个HQL查询,以包含以下列:名称、姓氏、已传递。
姓名是学生的姓名,是两个实体之间的联系。
传递的列可以是true或false。它表示学生是否通过了考试。
因此,如果FinalExam中存在一行标记高于6,则为真

我如何才能做到这一点?
我想要这样的东西:

select s.name, s.surname, ( Select count(*)>1 from FinalExam exam
                            where exam.name = s.name
                            and exam.surname = s.surname
                            and exam.mark > 6) 
from Student s

您必须向
学生
类添加属性,如下所示:

private boolean passed;
此属性不得保存在DB上(如果使用JPA annotation is annoted ad@Transient,如果使用XML映射,则不将其放入XML文件中,或者如果将其放入,则可以使用公式标记,将insert和update属性设置为false

关于您的查询(我假设您已在类中添加此属性):


可能重复我不这么认为,在你提到的答案中,所有数据都是从一个名为UserVideoRating的实体获取的。在我的例子中,我有2个实体。你的语法不正确。你会在上面的链接中找到正确的语法来编写此类查询。仍然不清楚正确的语法是什么。你能帮我@S吗am?首先,如果执行count(*)>1,则将得到
错误:未指定任何查询
。使用正确的查询更新您的问题。
SELECT s.name, s.surname,
    (SELECT
        CASE WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
    FROM FinalExam f
    WHERE f.name = s.name
    AND f.surname = s.surname
    AND f.mark > 6)
FROM Student s