Hibernate 结合两个没有关系的 HQL 查询
Hibernate Combine two HQL query without relations
我正在使用 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 查询:name、surname、passed。
Name和surname是Student的名字和姓氏,2个实体之间的联系。
传递的列可以是 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
你必须在Student
class中添加一个属性,如下:
private boolean passed;
这个属性一定不能保存在DB上(如果你使用JPA注解是注解广告@Transient,如果你使用XML映射,你不要放在XML文件,或者如果你放,你可以使用公式标签插入和更新 属性 设置为 false.
关于您的查询(我假设您已在 class 中添加此 属性):
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
我正在使用 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 查询:name、surname、passed。
Name和surname是Student的名字和姓氏,2个实体之间的联系。
传递的列可以是 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
你必须在Student
class中添加一个属性,如下:
private boolean passed;
这个属性一定不能保存在DB上(如果你使用JPA注解是注解广告@Transient,如果你使用XML映射,你不要放在XML文件,或者如果你放,你可以使用公式标签插入和更新 属性 设置为 false.
关于您的查询(我假设您已在 class 中添加此 属性):
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