You probably meant somethings like this:
Code:
List<MyClass> lst = (List<MyClass>)
session.createCriteria(MyClass.class)
.add(Property.forName("prop1").eq(theProp1ValueIWant))
.add(Property.forName("prop2").eq(theProp2ValueIWant))
.add(Property.forName("prop3").eq(theProp3ValueIWant))
.addOrder(Property.forName("prop3").desc())
.addOrder(Property.forName("prop1").asc())
.list()
;
setProjection() is meant exactly to specify the fields you want to be returned by a query, thereby a Criteria query using it want not return a specific class, but an array (o a list, can't remeber) of the specified fields for each row.
All this, of course, if I'm not wrong: I quit using Criteria because of some problems with border cases. This happened some months ago, so forgive me if my reply can't be more exact.
Giampaolo