Hibernate:具有多个表的查询

时间:2013-09-10 12:56:43

标签: sql hibernate

我是hibernate的新手,并且正在开发一个需要使用复杂查询从数据库中提取数据的项目。所以只是举个例子: 让表有学生,出勤,科目等等。 学生包含(姓名(假设主键),班级,年龄,性别......和其他学生数据)。 出勤包含(学生姓名,出勤率%)。 主题包含(学生,科目)

我需要提取像

这样的查询的数据

q1 :(年龄> 20&& age< 22)

q2:class == Engineering

q3:应该包含算法作为主题。 学生(q1 || q2)&& Q3。

即使查询也可能更复杂。喜欢((q1&& q2)||(q3&& q4))&& q5 ..

我几乎没有问题: 假设所有表都有相同的主键(我正在加入)。

  1. 最好和最有效的方法是什么。

  2. 是否可以为这样复杂的表达式编写单个查询,如果可能的话 推荐的 ?

  3. 如果无法为其编写单个查询。我可以把它计算为后缀表达式,看起来很脏吗?

  4. 4.我的理解是,如果q1和q2属于同一个表,并且where子句将起作用,但如果它们属于不同的表,如果必须进行连接,则需要应用条件。对吗?

    如果我的问题看起来很愚蠢,我很抱歉,仅仅两天前我开始研究它。 任何好的阅读资源都会有所帮助。

2 个答案:

答案 0 :(得分:0)

是的,您可以使用单个语句创建非常复杂的查询。您可能希望查看子查询。 至于是否推荐,它都将取决于执行计划,这需要在实际数据集中进行选择。

希望它有所帮助。

答案 1 :(得分:0)

我相信Hibernate Criteria API非常适合您的目的。您可以在本文中看到一些示例:

http://www.javalobby.org/articles/hibernatequery102/  http://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htm

此致