<div dir="ltr" style="text-align: justify;" trbidi="on">
<div dir="ltr" style="text-align: justify;" trbidi="on">
<div dir="ltr" style="text-align: justify;" trbidi="on"><b>Group by</b> clause is used to return the <b>aggregate </b>values by <b>grouping </b>on returned component. HQL supports <b>Group By Clause</b>. In our example we will calculate the count of students which have same subject. Here is the java code for calculating the count wise:</p>
<p>&#8220;SELECT student.course, COUNT(student.course) FROM Student student GROUP BY student.course&#8221; ;</p>
</div>
<p><b>Student.java</b></p>
<pre class="highlight" name="code">package com.sdnext.hibernate.tutorial.dto; 
 
import java.io.Serializable; 
 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 
 
@Entity 
@Table(name="STUDENT") 
public class Student implements Serializable 
{ 
 
 /** 
 * serialVersionUID 
 */ 
 private static final long serialVersionUID = 8633415090390966715L; 
 @Id 
 @Column(name="ID") 
 @GeneratedValue(strategy=GenerationType.AUTO) 
 private int id; 
 @Column(name="STUDENT_NAME") 
 private String studentName; 
 @Column(name="ROLL_NUMBER") 
 private int rollNumber; 
 @Column(name="COURSE") 
 private String course; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getStudentName() { 
 return studentName; 
 } 
 public void setStudentName(String studentName) { 
 this.studentName = studentName; 
 } 
 public int getRollNumber() { 
 return rollNumber; 
 } 
 public void setRollNumber(int rollNumber) { 
 this.rollNumber = rollNumber; 
 } 
 public String getCourse() { 
 return course; 
 } 
 public void setCourse(String course) { 
 this.course = course; 
 } 
} 
</pre>
<div align='center' id="ads-id"></div>
<p><b>hibernate.cfg.xml</b></p>
<pre class="highlight" name="code"><;?xml version="1.0" encoding="UTF-8"?>; 
 
<;?DOCTYPE hibernate-configuration PUBLIC 
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">; 
<;hibernate-configuration>; 
 <;session-factory>; 
 <;!-- Database connection settings -->; 
 <;property name="connection.driver_class">;com.mysql.jdbc.Driver<;/property>; 
 <;property name="connection.url">;jdbc:mysql://localhost:3306/hibernateDB2<;/property>; 
 <;property name="connection.username">;root<;/property>; 
 <;property name="connection.password">;root<;/property>; 
 
 <;!-- JDBC connection pool (use the built-in) -->; 
 <;property name="connection.pool_size">;1<;/property>; 
 
 <;!-- SQL dialect -->; 
 <;property name="dialect">;org.hibernate.dialect.MySQLDialect<;/property>; 
 
 <;!-- Enable Hibernate's automatic session context management -->; 
 <;property name="current_session_context_class">;thread<;/property>; 
 
 <;!-- Disable the second-level cache -->; 
 <;property name="cache.provider_class">;org.hibernate.cache.NoCacheProvider<;/property>; 
 
 <;!-- Echo all executed SQL to stdout -->; 
 <;property name="show_sql">;true<;/property>; 
 
 <;!-- Drop and re-create the database schema on startup -->; 
 <;property name="hbm2ddl.auto">;update<;/property>; 
 
 
 <;mapping class="com.sdnext.hibernate.tutorial.dto.Student"/>; 
 
 <;/session-factory>; 
 <;/hibernate-configuration>; 
</pre>
<p><b>HibernateTestDemo.java</b></p>
<pre class="highlight" name="code">package com.sdnext.hibernate.tutorial; 
 
import java.util.Iterator; 
 
import org.hibernate.Query; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.AnnotationConfiguration; 
 
public class HibernateTestDemo { 
 /** 
 * @param args 
 */ 
 public static void main(String[] args) 
 { 
 SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
 Session session = sessionFactory.openSession(); 
 session.beginTransaction(); 
 
 String SQL_QUERY = "SELECT student.course, COUNT(student.course) FROM Student student GROUP BY student.course"; 
 Query query = session.createQuery(SQL_QUERY); 
 
 for(Iterator it=query.iterate();it.hasNext();) 
 { 
 Object[] row = (Object[]) it.next(); 
 System.out.print("Course Name: " + row[0]); 
 System.out.println(" | Number of Students: " + row[1]); 
 } 
 session.getTransaction().commit(); 
 session.close(); 
 } 
} 
</pre>
<div style="background-color: #ff99cc; border-width: thin; border: solid;">
<div style="color: blue;"><b>Output:</b></div>
<div style="color: red;">log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).</div>
<div style="color: red;">log4j:WARN Please initialize the log4j system properly.</div>
<p>Hibernate: select student0_.COURSE as col_0_0_, count(student0_.COURSE) as col_1_0_ from STUDENT student0_ group by student0_.COURSE<br />
Course Name: BA | Number of Students: 2<br />
Course Name: MA | Number of Students: 2<br />
Course Name: MCA | Number of Students: 3<br />
Course Name: PGDCP | Number of Students: 1</div>
<div class="separator" style="clear: both; text-align: center;"><img border="0" src="https://dineshonjava.com/wp-content/uploads/2012/05/groupby.jpg"/></div>
<p>
</div>
</div>
<div class="wp-post-navigation"> 
									 <div class="wp-post-navigation-pre"> 
									 <a href="https://dineshonjava.com/hql-order-by-example/">Previous</a> 
									 </div> 
									 <div class="wp-post-navigation-next"> 
									 <a href="https://dineshonjava.com/hibernate-count-query/">Next</a> 
									 </div> 
									</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
 $.post('https://dineshonjava.com/wp-admin/admin-ajax.php', {action: 'mts_view_count', id: '688'});
});
</script>
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…