Hibernate Projections (rowCount or countDistinct)

In this section, you will learn about the hibernate
projection with an example.
Projection Interface: This is an interface that
extends the Serializable. An object-oriented representation of a query
result set projection in a Criteria query. Built-in projection
types are provided by the Projections factory class. The
Projection interface might be implemented by application classes that define
custom projections.
The following example to count the total number of rows
and distinct rows to use the Projections.rowCount() and Projections.countDistinct()
method.
Table Name: Insurance
Here is the code of program:
package roseindia.tutorial.hibernate;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Projections;
public class hibernateProjectionExample {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Session sess = null;
try{
SessionFactory fact = new Configuration().configure().buildSessionFactory();
sess = fact.openSession();
Criteria crit = sess.createCriteria(Insurance.class);
crit.setProjection(Projections.rowCount());
List result = crit.list();
System.out.println("No. of rows: "+result);
crit.setProjection(Projections.distinct(Projections.countDistinct("insuranceName")));
List distList = crit.list();
System.out.println("Distinct Count: "+ distList);
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}
|
Download
this Code.
Output:
| log4j:WARN No appenders
could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate: select count(*) as y0_ from
insurance this_
No. of rows: [7]
Hibernate: select distinct
count(distinct this_.insurance_name) as y0_ from insurance this_
Distinct Count: [5]
|

|
Current Comments
3 comments so far (post your own) View All Comments Latest 10 Comments:This site is good tutorial.
Posted by sniperCat on Friday, 04.18.08 @ 13:34pm | #57021
crit.setProjection(Projections.distinct(Projections.countDistinct("insuranceName")));
there is a error in the above line of code when i run the program.
However, if i remove the Projections.distinct function it work fine with correct result.
Posted by Nelson on Saturday, 03.22.08 @ 21:54pm | #53816
here explained too easily about hibernate tools to use orm mapping.. this is useful for beginners to guide.thanks to roseindia..
Posted by RuthraMoorthy.P From Annur on Monday, 03.10.08 @ 18:34pm | #52206