您的位置:首页 > 数据库

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

2008-09-19 17:36 399 查看
转载自: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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: