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();
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();
相关文章推荐
- hibernate查询SQL语句返回自定义实体对象
- hibernate查询SQL语句返回自定义实体对象
- hibernate查询SQL语句返回自定义实体对象
- Hibernate 使用纯SQL语句完成查询操作
- T-sql 查询系统表 获取所有对象的定义sql语句
- Hibernate4 中getHibernateTemplate() 使用原生sql语句查询并返回非托管实体对象
- hibernate使用本地sql语句查询,解决List<Object[]>转换成List<实体>
- Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题
- hibernate使用hql和sql查询总记录数语句
- Hibernate直接执行sql语句,查询记录的个数
- hibernate 联合查询,返回多个表(对应着多个对象)的操作【元组】
- Hibernate基础-使用标准SQL语句进行查询
- Hibernate中使用原生的sql语句进行查询操作
- Hibernate使用sql语句查询
- SQL 语句 一对多关系,根据一查询多里面对应一的最新的一条记录
- Hibernate中级联查询语句还有Sql查询语句
- hibernate执行sql语句后转换为实体对象
- Hibernate使用sql语句查询
- Oracle 表建立Model对象和拼接Select查询语句SQL
- oracle 不小心把表数据锁掉,sys查询被锁对象和解锁SQL语句