0

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

我需要为查询提取数据,例如

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

q2:类 == 工程

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

甚至查询也可能更加复杂。像 ((q1&&q2)||(q3&&q4)) && q5 ..

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

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

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

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

4.我的理解是如果q1和q2属于同一个表AND/OR在where子句中将起作用,但如果它们属于不同的表,则必须进行连接,然后需要应用条件。正确的 ?

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

4

2 回答 2

0

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

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

问候

于 2013-09-10T14:02:05.797 回答
0

是的,您可以使用单个语句创建相当复杂的查询。您可能想查看子查询。至于是否推荐,这完全取决于执行计划,这需要选择实际数据集。

希望它有所帮助。

于 2013-09-10T13:44:14.253 回答