how to order a collection of a query hibernate criteria -


here model (simplified)

product

@entity @table(name = "products") public class product extends baseentity {  @id      private long id;  private string name; @onetomany(cascade = { cascadetype.persist, cascadetype.merge }) @joincolumn(name = "product_id") private list<productattribute> attributes;  } 

product attribute

@entity @table(name = "product_attribute_values") public class productattribute extends baseentity {      @id     private long id;      @manytoone(cascade = {cascadetype.persist, cascadetype.merge})     @joincolumn(name = "product_id")     private product product;      @manytoone(cascade = {cascadetype.persist, cascadetype.merge})     @joincolumn(name = "attribute_id")     private attribute attribute;     private string value;  } 

attribute

@entity @table(name = "attributes") @proxy(lazy = false) public class attribute extends baseentity {      @id     private long id;     private string name;  } 

i want query single product (by id) , order list of attributes (productattributes) attribute name.

this query

final criteria criteria = getsession().createcriteria(product.class); criteria.add(restrictions.eq("id", productid)); criteria crit = criteria.createcriteria("attributes"); criteria secondcriteria = crit.createcriteria("attribute"); secondcriteria.addorder(order.desc("name")); return (product) criteria.uniqueresult(); 

i tried didnt work (dont recognize name field)

final criteria criteria = getsession().createcriteria(product.class); criteria.add(restrictions.eq("id", productid)); criteria.createalias("attributes", "atr"); criteria.addorder(order.asc("atr.attribute.name")); 

any idea?

i did it. create 1 more alias , specify join type in both

final criteria criteria = getsession().createcriteria(product.class); criteria.add(restrictions.eq("id", searchfilter.getproductid())); criteria.createalias("attributes", "atrs", criteriaspecification.left_join); criteria.createalias("atrs.attribute", "atr", criteriaspecification.left_join); criteria.addorder(order.asc("atr.name")); 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -