hibernate的对象查询与sql语句的对应

转载自:http://www.devarticles.com/c/a/Java/Hibernate-Criteria-Queries-in-Depth/2/

1:

SELECT * FROM ORDER

对应的hibernate对象查询:

List orders= session.createCriteria(Order.class).list();

2:

SELECT NAME,ID FROM PRODUCT

对应的hibernate对象查询:

List products =session.createCriteria(Product.class).setProjection(
  Projections.propertyList()
  .add(Projections.property(/"name/"))
  .add(Projections.property(/"id/"))
  ).list();

3:

SELECT O.*, P.* FROM ORDERS O, PRODUCT P WHERE O.ORDER_ID=P.ORDER_ID;
对应的hibernate对象查询:

List orders = session.createCriteria(Order.class)
  .setFetchMode(“products”,FetchMode.JOIN)
  .list();
4:

SELECT * FROM ORDERS WHERE ORDER_ID=’1092’;

对应的hibernate对象查询:

List orders= session.createCriteria(Order.class)
  .add(Restrictions.eq(“orderId”,”1092”))
  .list();
5:

SELECT O.*, P.* FROM ORDERS O, PRODUCT P WHERE 
  O.ORDER_ID=P.ORDER_ID AND P.ID=’1111’;
对应的hibernate对象查询:

List orders = session.createCriteria(Order.class)
  .setFetchMode(“products”,FetchMode.JOIN)
  .add(Restrictions.eq(“id”,”1111”))
  .list();
6:

SELECT COUNT(ID) FROM ORDER HAVING PRICETOTAL>2000 GROUP BY ID

对应的hibernate对象查询:

List orders = session.createCriteria(Order.class)
  .setProjection( Projections.projectionList()
  .add( Projections.count(“id”) )
  .add( Projections.groupProperty(“id”) )
  )
  .list();
查询总结:

(1)如何得到session:

   Configuration cfg = new Configuration()
  .addClass(Order.class);

  SessionFactory sf = cfg.buildSessionFactory(); 
  // open session
  Session sess = sf.openSession();

(2)HQL方法

String query = "select o from o "
  + "Order as o join o.products as p "
  + "where o.priceTotal > :priceTotalLower "
  + "and o.priceTotal < :priceTotalUpper";  

  Query q = sess.createQuery(query);
  q.setDouble("priceTotalLower", 
  Double.parseDouble(lower));

  q.setDouble("priceTotalUpper",
  Double.parseDouble(upper))

  q.list();
(3)Criteria 

    List list = sess.createCriteria(Order.class)
  .add(Restrictions.between(lower,upper)
  . list();

    Order o=(Order)list.iterator.next();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值