22 November, 2013

Criteria Queries

Creating a criteria:
session.createCriteria(Cat.class)

Criterion->singular
Criteria->Plural

session.createCriteria(className).add(Restriction)
Criterion   : Restriction
            : Property
            : Expression(Deprecated)     


                  :like 
                  :or   
Restriction       :eq   
                  :between    
                  :isNull     
                  :disjunction
                  :sqlRestriction------------>specify SQL Directly



Property.forName("propName"):returns you the matching Property instance.

what is difference b/w below codes?                  
List cats = session.createCriteria(Cat.class) 
.add( Restrictions.like("name", "F%")  .list();  
and
List cats = session.createCriteria(Cat.class)    
.add( Property.forName("name").like("F%") )   .list(); 

no difference between the first two code snippets.
You should use Property.forName("propName") when you need to use that property multiple times in Criteria or Query.
It is equivalent to using direct no. (e.g. 12) or using variable assigned to the no. (e.g. int x = 12) and use the variable every time you need to use the no.

ordering 
order : asc
      : desc

List cats = session.createCriteria(Cat.class).addOrder(Order.asc("name").list()

 Association 
1) inner join:

List cats = sess.createCriteria(Cat.class).createCriteria("kittens").list();
in above ex. we are crating 2 criteria objects.

creatAlias:Join an association, assigning an alias to the joined association.
List cats = sess.createCriteria(Cat.class).creatAlias("kittens","kt")
.add(Restriction.like("kt.name","F%")).list();


No comments:

Post a Comment