我是hibernate的新手,并且正在从事一个需要使用复杂查询从数据库中提取数据的项目。举个例子:让有表学生,出勤,学科等..学生包含(姓名(假设主键),班级,年龄,性别..和其他学生数据)。出勤包含(学生姓名,出勤百分比)。学科包含(学生,学科)
我需要为查询提取数据,例如
q1:(年龄 > 20 && 年龄 < 22)
q2:类 == 工程
q3:应该包含算法作为它的主题。(q1||q2) && q3 的学生。
甚至查询也可能更加复杂。像 ((q1&&q2)||(q3&&q4)) && q5 ..
我有几个问题:假设所有表都有相同的主键(我正在加入)。
什么是最好和最有效的方法。
是否可以为这种复杂的表达式编写单个查询,如果可能的话,是否推荐?
如果无法为其编写单个查询。我可以考虑像后缀表达式一样计算它,看起来很脏?
4.我的理解是如果q1和q2属于同一个表AND/OR在where子句中将起作用,但如果它们属于不同的表,则必须进行连接,然后需要应用条件。正确的 ?
如果我的问题看起来很愚蠢,我很抱歉两天前我开始研究它。任何好的阅读资源都会有所帮助。