hibernate多表联合查询
2016-06-30 07:22
176 查看
//三表联合查询
/*
* select t.* from product t,category c,categorysecond cs
WHERE t.csid = cs.csid
and c.cid = cs.cid
and c.cid = 1
*/
/*
* 如果是写HQL语句的写法
*
* select p from Category c ,CategorySecond cs ,Product p where c.cid = cs.category.cid
* and cs.csid = p.categorySecond.csid
* and c.cid = ?
*
*/
//hibernate自动外键关联,可以简化代码,提高效率
String hql = “select p from Product p join p.categorySecond cs join cs.category c where c.cid = ?”;
//这个是多表联合查询,因此不能使用离线查询
List\<\Product> list = this.getHibernateTemplate().execute(new PageHibernateCallback\<\Product>(hql, new Object[]{cid}, begin, limit));
——————————-java类
public class Product {
}
public class CategorySecond {
}
—————————————–hbm配置文件
!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd“>
!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd“>
/*
* select t.* from product t,category c,categorysecond cs
WHERE t.csid = cs.csid
and c.cid = cs.cid
and c.cid = 1
*/
/*
* 如果是写HQL语句的写法
*
* select p from Category c ,CategorySecond cs ,Product p where c.cid = cs.category.cid
* and cs.csid = p.categorySecond.csid
* and c.cid = ?
*
*/
//hibernate自动外键关联,可以简化代码,提高效率
String hql = “select p from Product p join p.categorySecond cs join cs.category c where c.cid = ?”;
//这个是多表联合查询,因此不能使用离线查询
List\<\Product> list = this.getHibernateTemplate().execute(new PageHibernateCallback\<\Product>(hql, new Object[]{cid}, begin, limit));
——————————-java类
public class Product {
private Integer pid; private String pname; private Double market_price; private Double shop_price; private String image; private String pdesc; private Integer is_hot; private Date pdate; //二级分类因为是外键hibernate只能创建对象 private CategorySecond categorySecond; set,get方法..................
}
public class CategorySecond {
private Integer csid; private String csname; /*一级分类的外键*/ private Category category; //配置商品的集合 private Set<Product> products = new HashSet<>(); set,get方法..................
}
—————————————–hbm配置文件
!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd“>
<id name="csid"> <generator class="native"/> </id> <property name="csname"/> <many-to-one name="category" class="cn.itcast.shop.category.vo.Category" column="cid"/> <!-- 二级分类与商品的关联 --> <set name="products"> <key column="csid"/> <one-to-many class="cn.itcast.shop.product.vo.Product"/> </set> </class>
!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd“>
<class name="cn.itcast.shop.product.vo.Product" table="product"> <id name="pid"> <generator class="native" /> </id> <property name="pname" /> <property name="market_price" /> <property name="shop_price" /> <property name="image" /> <property name="pdesc" /> <property name="is_hot" /> <property name="pdate" /> <many-to-one name="categorySecond" class="cn.itcast.shop.categorySecond.vo.CategorySecond" column="csid"></many-to-one> </class>
相关文章推荐
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- Hibernate实现批量添加数据的方法
- Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示
- 深入理解Hibernate中的flush机制