java - Hibernate querying -


i'm sorry maybe foolish question. have products , orders tables (with many-to -many relationship), have user table. , want product count user_id , special field "order_satus". can make 2 queries order special criteria , size of product in order. not optimal @ all. when use jdbctemplate did lot of joins , 1 query.

here entities:

@entity @table(name = "shop.order") public class order { @id @column(name = "order_id") @generatedvalue(strategy = generationtype.auto) private long orderid;  private long user_id;  @column(name = "databegin") private date datebegin;  @column(name = "dataend") private date dateend;  @manytoone(fetch = fetchtype.lazy) @joincolumn(name = "user_id", insertable = false, updatable = false) private user user;  @manytomany(fetch = fetchtype.lazy) @jointable(name = "order_product", joincolumns = { @joincolumn(name = "order_id") }, inversejoincolumns = { @joincolumn(name = "product_id") }) private list<product> products; } 

product entity

 @entity     @table(name = "product")     public class product {      @id     @generatedvalue(strategy = generationtype.auto)     private int product_id;       @manytomany(fetch = fetchtype.lazy)     @jointable(name = "order_product", joincolumns = { @joincolumn(name = "product_id") }, inversejoincolumns = { @joincolumn(name = "order_id") })     private list<order> order;      public list<order> getorder() {         return order;     }      public void setorder(list<order> order) {         this.order = order;     }      @column     @notblank     private string name;      @column     @max(value = 250)     private string descr;      @column     @max(value = 250)     private string manufacturer;      @column     private double price;      @column     private byte[] barcode;      @column     private byte[] picture;      @foreignkey(name = "category_id")     private int category_id; 

as gave sql query..

'select count(*) produtc p join order ord on ord.id = ? , ord.status = ?' – igor masternoy

and according entity structure gave, hql be..

select ord.products productlist order ord ord.id=? , ord.status=? 

this query return list of products (list<product> products) , can count java code i.e. productlist.size(); size product count need based on order id , order status pass parameter , can append user.id in cause filter result per user.

this productlist per need..

query query = getsession().createquery("select ord.products productlist order ord ord.id=:orderid , ord.status=:orderstatus"); query.setinteger("orderid", orderidparameter); query.setstring("orderstatus", orderstatusparameter); list<product> productlist = (list<product>) query.list(); integer productcount = productlist.size(); 

this productcount product count need.


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -